Imagemagick Convert创建的图像非常像素化

4
我使用ImageMagick从网站上的图像创建缩略图,使用convert命令如下:convert -size 220x220 %s -resize 220 -profile '*' %s", $image, $thumb,这已经运作良好很长时间了。成千上万的图像已经被处理过,所有的缩略图看起来都很棒......除了一个。由于某种原因,这张图片生成了一个非常丑陋的缩略图,我无法找出原因。

原始图片: http://i.imgur.com/fCbAN.jpg

生成的缩略图: http://i.imgur.com/MdLCs.jpg

有人能解释为什么我的convert代码会导致这种情况吗?


原始文件是JPEG格式还是其他格式? - Mark Ransom
1个回答

5
缩略图保存的质量非常低(大约10-15,99接近无损)。我认为问题是,“为什么会发生这种情况”。
我可以想到一些原因,但您需要进行实验。我假设您发布的图像是真实的图像(不是转换PNG到JPG等的副本),并且命令行完整地描述了完整的图像工作流程。
- 您的ImageMagick设置尝试保持估计的图像质量。您没有显式设置质量(例如,-quality 75),因此缩略图获得与源图像相同的量化器设置。假设源具有低量化器,但由于高频组件(由于扫描而使图像“嘈杂”),您看不到它。当重新采样时,背景失去其噪声并变成平滑渐变,在源中不存在。而平滑渐变对于低量化器来说非常困难。请尝试明确设置质量因子(40至99,40更好地压缩但更粗,99质量非常高但文件更大)。 - 重采样器和扫描仪创建的Moiré模式之间存在某种干扰。这种可能性较小,因为我看到约8个像素的“波长”,这并不罕见,也不认为在您获得的这么多图像中,没有一个具有大致相同的大小和长宽比;在这种情况下,应该会触发相同的行为。但是您说它没有发生,因此如果此图像对于大小、长宽比或源(例如批次中使用Scan-o-matic 600扫描仪扫描的极少数图像之一)不常见,则此场景变得非常不可能。但是,如果正确,则在调整大小之前添加高斯模糊,它应该可以修复问题:例如,-blur 2x2。 - 文件名中存在错误,由于某种原因,这使得ImageMagick包装器将其解释为“将量化器设置为最糟糕的值”的命令。真的不太可能(如果解释器将文件名的一部分解释为选项,则不应将其解释为文件名,并且文件名的其余部分不再是真正的文件名;导致我们没有观察到的“文件未找到”错误。同样,如果原始文件名类似于“--progressive-swedish-music.jpg”,请在缩略图之前尝试重命名它。 - 无论如何,我把我的钱放在第1个选项上。
您可以尝试的另一个测试是从ImageMagick(命令行)而不是从PHP运行相同的命令。

使用99是一个不好的主意吗?如果这意味着更高的质量,我不介意稍微增加文件大小。在90和99之间会有明显的差异吗? - Josh Mountain
顺便说一下,你真是个天才,我把质量设置为99,效果看起来很棒! - Josh Mountain
在一个小图像上,我不指望它太大。75 应该足够了,这也是我在互联网上看到的缩略图的常用值。那些想要真正高质量的人(艺术画廊等)会选择 PNG。你的 220x465 图像在 PNG 格式下大约为 180 KB,在 JPEG 格式下为 30 KB,相差 6 倍。 - LSerni
我现在正在尝试几种不同的设置,有些情况下90和99之间的文件大小差异非常大(超过两倍),而质量差异并不明显。我可能最终会选择80左右的设置。 - Josh Mountain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接