array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'imagick.resizeimage.php', 1 => 'Imagick::resizeImage', ), 'up' => array ( 0 => 'class.imagick.php', 1 => 'Imagick', ), 'prev' => array ( 0 => 'imagick.resetimagepage.php', 1 => 'Imagick::resetImagePage', ), 'next' => array ( 0 => 'imagick.rollimage.php', 1 => 'Imagick::rollImage', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/imagick/imagick/resizeimage.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL imagick 2, PECL imagick 3)
Imagick::resizeImage — Масштабирует изображение
$columns
,$rows
,$filter
,$blur
,$bestfit
= false
,$legacy
= false
Масштабирует изображение до желаемых размеров с помощью filter.
Замечание: Поведение параметра
bestfit
было изменено в Imagick 3.0.0. До этой версии при изменении изображения размером 200 x 150 до размера 400 x 300 никаких операций не происходило. В Imagick 3.0.0 и более поздних версиях изображение будет масштабировано до размера 400 x 300, так как наиболее соответствует ("best fit") данным размерам. Если указан параметр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();
}
?>