我担心 Imagick 可能不支持清晰的图像大小调整。即使是最好的过滤器也会返回低于标准的模糊结果,在我看来甚至是可怕的。
这是我能从 Imagick 中获得的最佳品质:
这是使用TimThumbs调整大小的:
注意到巨大的质量差异了吗?谁能提供一个由 Imagick 产生的清晰图像的例子?
下面是用于生成第一张图片的 Imagick 代码:
function imgSize($imagePath,$imageName,$imageExt,$width,$height,$copy) {
$file = "img/".$imageName."-".$width."x".$height.".".$imageExt;
if (!file_exists($file)) {
try {
$image = $imagePath;
$im = new Imagick();
$im->pingImage($image);
$im->readImage($image);
$im->setImageFormat($imageExt);
//$im->thumbnailImage($width,$height,true);
$im->cropThumbnailImage($width,$height);
$im->resizeImage($width,$height,Imagick::FILTER_LANCZOS,0,false);
$im->cropThumbnailImage($width,$height);
if ($imageExt=("jpg"||"JPG")) {
$img->setComression(Imagick::COMPRESSION_JPEG);
$img->setComressionQuality(100);
}
if (!$copy==null) {
$draw = new ImagickDraw();
$draw->setFont("fpdf/font/Montserrat-Regular.ttf");
$draw->setFontSize(35);
$draw->setFillColor("Gray");
$draw->setFillAlpha(0.5);
$draw->setGravity(Imagick::INTERPOLATE_AVERAGE);
$im->annotateImage($draw,0,0,-45,$copy);
}
$im->writeImage("img/".$imageName."-".$width."x".$height.".".$imageExt);
$im->destroy();
return "img/".$imageName."-".$width."x".$height.".".$imageExt;
}
catch(Exception $e) { echo $e->getMessage(); }
}
};
我知道有类似的问题,但是对于这个图像质量问题还没有足够的答案。解决 Imagick 图像质量问题的大多数尝试都是将问题简化为“这就是缩小图像时得到的结果”。但是我在这篇文章中提供的 TimThumbs 图像示例反驳了这个假设。您可以使用 PHP 缩小图像并获得惊人的结果。