(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
на
координатах src_x
,src_y
и помещает
его в прямоугольную область изображения dst_image
с
шириной dst_width
и высотой dst_height
на координатах 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
, если выполнилась успешно, или false
, если возникла ошибка.
Версия | Описание |
---|---|
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. Для расчёта нового пиксела и его цвета применяется некоторое приближение. В случае палитровых изображений мы пытаемся создать новый цвет, а если это не удаётся, мы выбираем ближайший (теоретически) вычисленный цвет. Это не всегда визуально ближайший цвет. Такой подход может давать в результате пустые (или визуально пустые) изображения. Для устранения этой проблемы, пожалуйста, используйте truecolor-изображения в качестве результирующих, создаваемые функцией imagecreatetruecolor().