(PHP 4, PHP 5, PHP 7, PHP 8)
imagecopyresized — Копирует и изменяет размер части изображения
$dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_width,$dst_height,$src_width,$src_height
Функция imagecopyresized() копирует прямоугольную область одного
изображения на другое.
Параметр dst_image — целевое изображение,
а src_image — идентификатор исходного изображения.
Функция imagecopyresized() копирует на изображении src_image
прямоугольную область шириной src_width и высотой src_height
и помещает скопированную часть в прямоугольную область
шириной dst_width и высотой dst_height
на целевом изображении dst_image.
Координаты левого верхнего угла области на исходном изображении
определяют параметры src_x и src_y,
а на целевом — dst_x и dst_y.
Функция растянет или сожмёт фрагмент изображения,
если координаты или размер исходного и целевого изображений не совпадают.
Координаты отсчитываются от левого верхнего угла изображения.
При совпадении аргументов dst_image и src_image
функция копирует области внутри одного изображения,
но когда области перекрываются — выдаёт непредсказуемый результат.
dst_imageРесурс целевого изображения.
src_imageРесурс исходного изображения.
dst_xКоордината точки по оси x на целевом изображении.
dst_yКоордината точки по оси y на целевом изображении.
src_xКоордината точки по оси x на исходном изображении.
src_yКоордината точки по оси y на исходном изображении.
dst_widthШирина области на целевом изображении.
dst_heightВысота области на целевом изображении.
src_widthШирина области на исходном изображении.
src_heightВысота области на исходном изображении.
Функция возвращает логическое значение true.
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметры dst_image и src_image теперь принимают
объект GdImage;
раньше принимался тип resource.
|
Пример #1 Пример изменения размера изображения
В примере размер изображения уменьшается в два раза.
<?php
// Файл и новый размер
$filename = 'test.jpg';
$percent = 0.5;
// Тип содержимого
header('Content-Type: image/jpeg');
// Получение нового размера
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// Загрузка
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Изменение размера
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Вывод
imagejpeg($thumb);Вывод приведённого примера будет похож на:
Пример выведет изображение в половинном размере. Функция imagecopyresampled() обрабатывает изображения с меньшей потерей качества.
Замечание:
Из-за ограничения количества цветов палитровых изображений значением 255 + 1 цвет возникает проблема. Для ресемплирования или фильтрации изображений часто требуется больше 255 цветов, поэтому функция вычисляет новый цвет пикселя методом аппроксимации. При обработке палитровых изображений функция пытается добавить в палитру новый цвет, а если создать цвет невозможно, вычисляет теоретический ближайший. Иногда расчёт даёт странный результат: цвет не кажется близким, а изображение выглядит пустым. С полноцветными целевыми изображениями, которые, например, создаёт функция imagecreatetruecolor(), ресемплирование работает без ошибок.