Imagick::resizeImage
PHP Manual
PHP Manual»Imagick»Imagick::resizeImage

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();
}

?>

To Top