请注意,我在 Ubuntu Linux 15.10 上使用此函数时 CPU 使用率极高。切换到 resizeImage 函数解决了问题。
(PECL imagick 2, PECL imagick 3)
Imagick::resampleImage — 将图像重新采样到所需的分辨率
$x_resolution
,$y_resolution
,$filter
,$blur
将图像重新采样到所需的分辨率。
x_resolution
y_resolution
filter
blur
成功时返回 true
。
示例 #1 Imagick::resampleImage()
<?php
function resampleImage($imagePath) {
$imagick = new \Imagick(realpath($imagePath));
$imagick->resampleImage(200, 200, \Imagick::FILTER_LANCZOS, 1);
header("Content-Type: image/jpg");
echo $imagick->getImageBlob();
}
?>
请注意,如果我理解正确,模糊度为 1 应该不会影响图像
https://php.net/manual/en/imagick.resizeimage.php
假设您想降低上传到 web 的图像的分辨率。
以下操作将加载任意分辨率的图像并将其重新采样为 72 dpi,然后保存为另一个文件。
setImageResolution() 和 resampleImage() 的 dpi 应该与您重新采样的 dpi 相同。
<?php
$image = new Imagick();
$image->readImage('image.jpg');
$image->setImageResolution(72,72);
$image->resampleImage(72,72,imagick::FILTER_UNDEFINED,0);
$image->writeImage('image72.jpg');
?>