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>
元素中提供width
和height
属性,以将其调整为缩略图大小。由于图像将按比例缩小,因此您不会看到“缩略图”图像的质量下降。
【讨论】:
以上是关于Carrierwave - 处理后的图像尺寸太大的主要内容,如果未能解决你的问题,请参考以下文章