PHP上传导致图像模糊

时间:2016-02-24 10:32:39

标签: php image

我正在使用可在此处找到的裁剪工具:https://github.com/sconsult/croppic

我已根据自己的需要对其进行了修改 - 对代码数量道歉,但我不知道可能导致问题的哪一部分。

我在5 - 6个月前首次实现了这个代码,它运行得很完美。 85%的质量适合每个测试的图像。 代码自从它的原始实现以来没有改变,但是图像显然非常模糊 - 它们只是看起来不再好看。我使用之前上传的相同图片进行了测试,并且它们看起来与最初上传和裁剪的图片看起来不一样。

我所知道的唯一可能影响此事件的重大事件是升级我们的PHP版本。我认为在实施时它曾经是5.3xx或类似的,现在我们正在运行5.6.18。可能导致模糊的原因是什么?来自5.6.18的{​​{1}}中是否存在可归因于此的显着变化?

请注意我已尝试将 5.3 更改为100 。不幸的是,所有这些都会增加文件大小。发生同样的模糊。

$jpeg_quality = 85;

更新

以下是2个示例图像,第一个是调整大小的版本(质量差,但设置为100%jpeg质量输出),第二个是原始图像。看看墙上的石头,质量的降低非常明显。

裁剪

enter image description here

原始

enter image description here

2 个答案:

答案 0 :(得分:1)

这里的问题是imagerotate()功能。即使没有应用旋转,我的脚本也被告知要旋转图像。这导致图像质量下降。我修改了脚本以便阅读;

$rotated_image = $angle == 0 ? $lrg_resized_image : imagerotate($lrg_resized_image, -$angle, 0);

这里仍然有一些未知的原因,为什么这种情况开始发生,之前它没有问题,另外如果我旋转图像,它仍然不是很好,但幸运的是无论如何都不太可能需要的用例。

感谢Golden_flash帮助我调试

答案 1 :(得分:0)

添加

imageconvolution($original_img,array(array(-1,-1,-1),array(-1,16,-1),array(-1,-1,-1)),8,0);

在imagecopyresample之后和imagejpeg之前

Imageconvolution用于锐化图像