2

我有一个 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

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

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

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

4

1 回答 1

0

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

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

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

于 2013-03-15T15:02:49.840 回答