Imagick :: resizeImage和Imagick :: scaleImage似乎压缩/模糊图像,即使被告知不要

时间:2013-12-29 18:43:28

标签: php imagemagick image-manipulation imagick image-compression

我在PHP Imagick库的resizeImagescaleImage方法中遇到了一个奇怪且挑剔的问题。 (客户不满意,因为他们是摄影师,这是可以理解的)

每当调整图像大小时,图像似乎变得非常轻微压缩,并且由于此压缩,暗区域变得略微像素化。即使我告诉它以完整的质量渲染,也会发生这种情况,我将在下面解释。

首先,这是一个示例,包括4x缩放版本,更容易看到问题: Compression Issue

起初我认为这是插值方法的一些问题,但是当我深入挖掘时,我意识到即使调整到完全相同的大小,图像仍然会被压缩。< / p>

上面显示的例子就是一个很好的例子。这是一张100x100的图像,使用以下代码调整为100x100:

$image->resizeImage($this->width, 0, Imagick::FILTER_CATROM, 1);

这似乎也有相同的结果,即使我被告知它会更好:

$image->scaleImage($this->width, 0, Imagick::FILTER_CATROM, 1); 

第四个参数是blursee PHP docs),我理解这是为了缩略图像变为别名,但是,即使我将此值减小到0.001,也没有任何反应。

即使我添加此代码以将图像质量设置为100%,它仍然会发生:

$image->setImageCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(100);

有人可以向我解释为什么这些文物出现在图像的黑暗区域,以及我如何防止这种情况发生?这些图像在Photoshop中调整得非常好,因此Imagick似乎是一个独特的问题,而不是图像本身不适合。

正如我所说,我知道这是挑选,但我的客户实际上是一名摄影师,原始图像质量对他们来说非常重要。

2 个答案:

答案 0 :(得分:1)

尝试使用不同的过滤器,较慢的过滤器可能会产生更好的效果。

答案 1 :(得分:0)

我也遇到了同样的问题,仍然无法从图像中移除模糊。尝试了所有组合。但最后我使用了 Sharpens

$viewport->unsharpMaskImage(0, 0.5, 1, 0);

这看起来更好。 这是一个额外的。