Carrierwave - 处理过的图像太大了

时间:2013-03-15 14:49:32

标签: ruby-on-rails carrierwave

我有一个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。我认为这个大小真的很重要。我可以做些什么吗?即使质量达到90%,图像应该像100kb一样?

在有人要求之前,其余的工作完美无缺。没有错误,px的大小是正确的,其他一切都很好。

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

1 个答案:

答案 0 :(得分:0)

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

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

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