CarrierWave::RMagick resize_to_fit 后 PNG 图像质量的损失

Posted

技术标签:

【中文标题】CarrierWave::RMagick resize_to_fit 后 PNG 图像质量的损失【英文标题】:Loss of PNG image quality following CarrierWave::RMagick resize_to_fit 【发布时间】:2012-10-04 03:31:21 【问题描述】:

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

从左到右,第一个是原图(100x105),第二个是Photoshop的Bicubic resize(95x100),第三个是RMagick的resize_to_fit(95x100)的结果。

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

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

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

关于如何提高图像质量的任何想法?或者是否有任何 RMagick 的替代品可以做得更好?

编辑:我试过this,虽然没有任何区别。无论如何,我认为那是用于 JPEG 图像的。

【问题讨论】:

你有没有想过这个问题? 不,从来没有。我也找不到更好的选择,所以我忍了:) jpg 将有助于使用许多渐变的某些图像。但是,我怀疑问题在于用于扩展的老化 RMagick 算法。在Photoshop中结果不同,我相信这是原因。 RMagick 的一个替代品是 Jimp,但它完全不同,不是为轨道设计的。 【参考方案1】:

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

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

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),但我还没有测试过。

【讨论】:

以上是关于CarrierWave::RMagick resize_to_fit 后 PNG 图像质量的损失的主要内容,如果未能解决你的问题,请参考以下文章

未定义的方法`marked_for_destruction?' CarrierWave,RMagick

无法从 Facebook 载波上传图片

反向标签编码给出错误

redis 配置

VTM010.0xIntraRecBlk函数解析

VTM010.0xIntraRecBlk函数解析