我在PHP Imagick库的resizeImage
和scaleImage
方法中遇到了一个奇怪且挑剔的问题。 (客户不满意,因为他们是摄影师,这是可以理解的)
每当调整图像大小时,图像似乎变得非常轻微压缩,并且由于此压缩,暗区域变得略微像素化。即使我告诉它以完整的质量渲染,也会发生这种情况,我将在下面解释。
首先,这是一个示例,包括4x缩放版本,更容易看到问题:
起初我认为这是插值方法的一些问题,但是当我深入挖掘时,我意识到即使调整到完全相同的大小,图像仍然会被压缩!。< / p>
上面显示的例子就是一个很好的例子。这是一张100x100的图像,使用以下代码调整为100x100:
$image->resizeImage($this->width, 0, Imagick::FILTER_CATROM, 1);
这似乎也有相同的结果,即使我被告知它会更好:
$image->scaleImage($this->width, 0, Imagick::FILTER_CATROM, 1);
第四个参数是blur
(see PHP docs),我理解这是为了缩略图像变为别名,但是,即使我将此值减小到0.001,也没有任何反应。
即使我添加此代码以将图像质量设置为100%,它仍然会发生:
$image->setImageCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(100);
有人可以向我解释为什么这些文物出现在图像的黑暗区域,以及我如何防止这种情况发生?这些图像在Photoshop中调整得非常好,因此Imagick似乎是一个独特的问题,而不是图像本身不适合。
正如我所说,我知道这是挑选,但我的客户实际上是一名摄影师,原始图像质量对他们来说非常重要。
答案 0 :(得分:1)
尝试使用不同的过滤器,较慢的过滤器可能会产生更好的效果。
答案 1 :(得分:0)
我也遇到了同样的问题,仍然无法从图像中移除模糊。尝试了所有组合。但最后我使用了 Sharpens 。
$viewport->unsharpMaskImage(0, 0.5, 1, 0);
这看起来更好。 这是一个额外的。