CarrierWave :: RMagick resize_to_fit后丢失PNG图像质量

时间:2012-10-13 14:15:38

标签: ruby-on-rails thumbnails carrierwave image-uploading rmagick

我使用CarrierWave::RMagick为Rails应用创建图像的缩略图版本,并且我注意到图像缩小时的质量损失。这在一定程度上是可以理解的,因为我们在缩小图像中的像素较少,因此质量较差,但我希望质量更好。我给你举个例子:

Original Photoshop (Bicubic) RMagick

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

对于此示例,原始图像仅略大于我想要的缩略图,但我基本上强制每个缩略图最大为100x100。我希望你能看到缩小尺寸的图像之间的区别。将Photoshop的质量与RMagick的质量进行比较可能是愚蠢的,但即使在Chrome中缩小以使图像更小也能产生更高质量的图像。

我基本上在CarrierWave上传器类中使用它:

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

有关如何改善图像质量的任何想法?或者如果有任何替代RMagick可以做得更好?

编辑:我已尝试this,但这没有任何区别。无论如何,我认为那是JPEG图像。

1 个答案:

答案 0 :(得分:0)

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

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

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

imagemagick docs表示-resize命令(由wavewave通过rmagick或minimagick使用)会为我们在此处测试的小变化创建模糊的结果,并且您最好使用-adaptive-resize命令,但在我的快速测试中,我无法产生更好的结果。

其他人reported better results使用graphicsmagick而不是imagemagick(也可能需要从rmagick切换到minimagick),但我没有测试过。