我有一个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)。这可能是个原因吗?
答案 0 :(得分:0)
100%和90%质量之间的差异非常小,节省的存储空间可以忽略不计。如果您真的只是将此版本用作缩略图,那么您应该考虑使用低得多的质量,例如60%或40%。
如果您担心确保质量仍然“足够好”,那么您还可以查看不同的压缩技术。在这种情况下,可以使用用于为Retina显示器提供@ 2x图像的过程。 Filament Group的文章Compressive Images提供了很好的资源。
tl; dr版本基本上是使用图像的原始(或接近原始)尺寸,但是大幅降低了图像质量(达到0-20%)。然后,在使用质量降低的图片时,请务必在width
元素中提供height
和<img>
属性,以将其调整为缩略图大小。由于图像将按比例缩小,因此您不会看到“缩略图”图像的质量下降。