ruby-on-rails – 在CarrierWave :: RMagick resize_to_fit之后丢失PNG图像质量

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

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

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

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

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

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

编辑:我已经尝试了this,虽然这没有任何区别.无论如何,我认为那是JPEG图像.

解决方法

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

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

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

imagemagick docs表明-resize命令(由carrierwave通过rmagick或minimagick使用)为我们在这里测试的小变化创建模糊结果,并且你最好使用-adaptive-resize命令,但在我的快速测试我无法产生更好的结果.

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...