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
): true

Функция 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(), ресемплирование работает без ошибок.

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

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