imagecopyresized

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecopyresizedКопирование и изменение размера части изображения

Описание

imagecopyresized(
    GdImage $dst_image,
    GdImage $src_image,
    int $dst_x,
    int $dst_y,
    int $src_x,
    int $src_y,
    int $dst_width,
    int $dst_height,
    int $src_width,
    int $src_height
): bool

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().

Смотрите также

  • imagecopyresampled() - Копирование и изменение размера изображения с ресемплированием
  • imagescale() - Масштабировать изображение по заданной ширине и высоте
  • imagecrop() - Обрезать изображение до заданного прямоугольника