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

Mer*_*ott 8 ruby-on-rails rmagick thumbnails image-uploading carrierwave

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

原版的 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
Run Code Online (Sandbox Code Playgroud)

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

编辑:我试过这个,虽然没有任何区别.无论如何,我认为那是JPEG图像.

Taa*_*avo 0

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

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

mogrify -resize 100x100 original.png
mogrify -resize 100x100 -quality 100 original.png
Run Code Online (Sandbox Code Playgroud)

imagemagick文档建议该-resize命令(由 Carrierwave 通过 rmagick 或 minimagick 使用)会为像我们在这里测试的那样的小变化创建模糊的结果,并且您最好使用该-adaptive-resize命令,但在我的快速测试中我没有能够产生更好的结果。

其他人报告说使用graphicsmagick而不是imagemagick有更好的结果(这可能还需要从rmagick切换到minimagick),但我还没有对此进行测试。