Imagick::resizeImage

(PECL imagick 2, PECL imagick 3)

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

Описание

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

?>