CarrierWave::RMagick调整大小后导致PNG图像质量损失

11
我正在使用CarrierWave::RMagick为Rails应用程序创建图像的缩略版本,但是我发现当图像被缩小时会失去质量。这在一定程度上是可以理解的,因为缩小后的图像像素较少,因此质量也较低,但我希望有更好的质量。我将向您展示一个示例:

原始图像 Photoshop(双三次插值) RMagick

从左到右,第一个是原始图像(100x105),第二个是Photoshop的双三次插值调整大小(95x100),第三个是RMagick的resize_to_fit结果(95x100)。

对于此示例,原始图像只比我想要的缩略图稍大,但我基本上强制每个缩略图最大为100x100。我希望您能看到缩小后的图像之间的差异。即使在Chrome中缩小图像以使其更小,也会产生更高质量的图像。

我基本上在CarrierWave上传器类中使用以下代码:

  version :thumb do
    process :resize_to_fit => [100, 100]
  end

有没有什么想法可以改善图片质量?或者有没有比RMagick更好的替代方案?

编辑:我已经尝试过这个,但是没有任何改善。我认为那只是针对JPEG图像的。


你最终解决了这个问题吗? - cman77
1
没有,我也找不到更好的选择,所以只能忍受它 :) - Merott
jpg 可以帮助处理使用多个渐变的某些图像。然而,我怀疑问题出在老化的 RMagick 算法用于缩放上。在 Photoshop 中,结果是不同的,我认为这是原因。一个替代 RMagick 的选择是 Jimp,但它完全不同,也不适用于 Rails。 - Eddie
1个回答

0

这个问题似乎出现在imagemagick库中,而不是特定于carrierwave或rmagick。

您可以在命令行上测试此功能。使用imagemagick自己的mogrify命令,这两个命令都会产生与rmagick相同的模糊输出:

mogrify -resize 100x100 original.png
mogrify -resize 100x100 -quality 100 original.png

ImageMagick文档建议使用-adaptive-resize命令而不是-resize命令(由CarrierWave通过RMagick或MiniMagick使用),因为对于像我们正在测试的小变化会产生模糊的结果,但在我的快速测试中,我无法产生更好的结果。

其他人报告称使用GraphicsMagick而不是ImageMagick获得了更好的结果(这也可能需要从RMagick切换到MiniMagick),但我没有进行过测试。


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