Carrierwave - 处理后的图像尺寸太大

Posted

技术标签:

【中文标题】Carrierwave - 处理后的图像尺寸太大【英文标题】:Carrierwave - Processed image too big in size 【发布时间】:2013-03-04 08:15:22 【问题描述】:

我有一个 Carrierwave 上传器并像这样处理图像:

version :thumbnail do
    process :resize_to_model
    process :quality => 90   
end

def resize_to_model
  thumbs_size = model.thumbnail_size
  resize_to_fill thumbs_size[:width], thumbs_size[:height]
end

但是,在处理了 1024x724 像素且之后为 214x151 像素的图像后,文件大小仅从 2.1mb 下降到 1.8mb。我认为 1,8mb 对于这种大小来说确实很多。我能做点什么吗?即使有 90% 的质量,图像也应该是 100kb 左右?

在有人问之前,其余的都很完美。没有错误,以px为单位的大小是正确的,其他一切都很好。

编辑:我忘了提到我使用 rmagick(resize_to_fill)。可能是这个原因吗?

【问题讨论】:

【参考方案1】:

100% 和 90% 质量之间的差异是如此之小,节省的存储空间可以忽略不计。如果您真的只是将此版本用作缩略图,您应该考虑使用低得多的质量,例如 60% 或 40%。

如果您担心确保质量仍然“足够好”,那么您还可以查看不同的压缩技术。在这种情况下,可以使用为 Retina 显示器提供 @2x 图像的过程。 Filament Group 的文章Compressive Images 提供了一个很好的资源。

tl;dr 版本基本上是使用图像的原始(或接近原始)尺寸,但大幅降低图像质量(至 0-20%)。然后,当使用降低质量的图像时,一定要在<img> 元素中提供widthheight 属性,以将其调整为缩略图大小。由于图像将按比例缩小,因此您不会看到“缩略图”图像的质量下降。

【讨论】:

以上是关于Carrierwave - 处理后的图像尺寸太大的主要内容,如果未能解决你的问题,请参考以下文章

在 Carrierwave 中重新处理不同版本的图像

ruby 使用CarrierWave延迟图像处理

您如何在 Carrierwave 中重新处理不同版本的图像?

应用程序尺寸太大,因为图像太多

导航栏背景图片太大

Carrierwave、MiniMagick 和调整图像大小