我使用imagemagick从我的网站上的图像创建缩略图,使用如下转换:convert -size 220x220 %s -resize 220 -profile '*' %s", $image, $thumb
这已经很长时间了。已经处理了数千张图像,所有缩略图看起来都很棒......除了一张。由于某种原因,这个图像产生了一个非常难看的缩略图,我无法弄清楚原因。
原始图片:http://i.imgur.com/fCbAN.jpg
生成的缩略图:http://i.imgur.com/MdLCs.jpg
有没有人知道为什么我的转换代码可能会发生这种情况?
答案 0 :(得分:5)
缩略图的保存质量非常低(约10-15,99接近无损)。我认为问题是“为什么会发生这种情况”。
我可以想到一些原因,但你必须进行实验。我假设您发布的图像是真实图像(不是完成将PNG转换为JPG的副本,我的意思是),命令行已完成,并描述了完整的图像工作流程。
您的ImageMagick设置会尝试保持估计的图像质量。您没有明确设置质量(例如-quality 75
),因此缩略图获得与源图像相同的量化器设置。假设源具有低量化器,但由于高频分量(由于扫描图像“嘈杂”),您看不到它。重新采样时,背景会失去噪音并变成平滑的渐变,而在源中不存在。在低量化器上,平滑的梯度是地狱。 尝试明确设置品质因数(40到99,40更好压缩但更粗,99是非常高质量但更大的文件)。
重采样器与扫描仪在采集的图像中创建的莫尔图案之间存在某种干扰。这是不太可能的,因为我看到大约8个像素的“波长”并不罕见,我也不认为你获得的图像太多,没有一个像这个大小和纵横比大致相同;在这种情况下应该触发相同的行为。你说它没有发生,所以如果这个图像的大小,宽高比或来源并不少见(例如,批量中用Scan-o-matic 600扫描仪扫描的极少数图像之一),这个场景就变成了不太可能。但如果它是正确的,那么在调整大小之前添加高斯模糊并且它应该修复一些事情:例如-blur 2x2
。
文件名中有坏juju,由于某种原因,这会让ImageMagick包装器解释“将量化器设置为最疯狂的值”的命令。真的不太可能(如果解释将文件名的一部分解释为一个选项,它不应该将其解释为文件名,文件名的其余部分不再是真正的文件名;导致“找不到文件”错误,我们如果原始文件名是“--progressive-swedish-music.jpg”,尝试在缩略图之前重命名。
无论如何,我把钱花在选项#1上。
您可以尝试的另一个测试是从ImageMagick(命令行)运行相同的命令,而不是从PHP运行。