Imagick::resizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::resizeImageМасштабирует изображение

Описание

public function Imagick::resizeImage(
    int $columns,
    int $rows,
    int $filter,
    float $blur,
    bool $bestfit = false,
    bool $legacy = false
): bool

Масштабирует изображение до желаемых размеров с помощью filter.

Замечание: Поведение параметра bestfit изменили в Imagick 3.0.0. До этой версии при размерах 400 x 300 точек изображение размером 200 x 150 точек оставалось нетронутым. В Imagick 3.0.0 и более поздних версиях изображение будет масштабироваться до размера 400 x 300 точек, поскольку такой размер «больше остальных соответствует» заданным размерам. Потребуется указать как ширину, так и высоту, если задали параметр bestfit.

Список параметров

columns

Ширина изображения.

rows

Высота изображения.

filter

Обратитесь к списку констант FILTER.

blur

Коэффициент размытия, где значение > 1 делает изображение более размытым, а значение < 1 - более резким.

bestfit

Необязательный параметр подгонки.

Возвращаемые значения

Функция в случае успешной работы возвращает true.

Список изменений

Версия Описание
PECL imagick 2.1.0 Добавлен необязательный параметр подгонки. Теперь метод поддерживает пропорциональное масштабирование. Для пропорционального масштабирования необходимо передать ноль в качестве любого параметра.

Примеры

Пример #1 Пример использования Imagick::resizeImage()

<?php
function resizeImage($imagePath, $width, $height, $filterType, $blur, $bestFit, $cropZoom) {
    //Коэффициент размытия, где значение >  1 делает изображение более размытым, а значение < 1 - более резким.
    $imagick = new \Imagick(realpath($imagePath));

    $imagick->resizeImage($width, $height, $filterType, $blur, $bestFit);

    $cropWidth = $imagick->getImageWidth();
    $cropHeight = $imagick->getImageHeight();

    if ($cropZoom) {
        $newWidth = $cropWidth / 2;
        $newHeight = $cropHeight / 2;

        $imagick->cropimage(
            $newWidth,
            $newHeight,
            ($cropWidth - $newWidth) / 2,
            ($cropHeight - $newHeight) / 2
        );

        $imagick->scaleimage(
            $imagick->getImageWidth() * 4,
            $imagick->getImageHeight() * 4
        );
    }


    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>