【发布时间】:2011-02-14 13:33:08
【问题描述】:
我正在运行 Ruby on Rails 3,我想使用 Paperclip 插件/gem 减小上传图像的大小(以字节为单位)。我需要它,因为我想提高与我的应用程序中网页加载时间相关的性能。
此时在我的模型文件中有:
has_attached_file :avatar,
:styles => {
:small => ["250x250#", :jpg]
}
:convert_options => { :small => '-quality 40' }
这会将图像转换为.jpg 格式,设置尺寸并将质量降低到 40(此值仅用于测试)。
然而,我注意到的是,尽管质量有所下降,但文件的大小并没有太大变化。例如,我报告了使用和不使用选项:convert_options => { :small => '-quality 40' } 的图像大小:
# Without using the 'convert_options'
Image size: 57.35 kB (58730 bytes)
# Using the 'convert_options'
Image size: 55.25 kB (56576 bytes)
为什么差别这么小?在不损失太多质量的情况下减小尺寸的最佳做法是什么?
更新:也许,正如@Matt Gibson 评论这个问题所说的那样,对于压缩来说,“图像看起来的样子”(例如照片)也很重要。根据图像中的背景、颜色数量等,压缩似乎因图片而异。
【问题讨论】:
-
你的图片看起来是什么样的?它真的适合JPEG压缩,即摄影吗?
-
@user502052 回复您的更新:好吧,至少您使用了正确的算法(例如,对于照片来说,JPEG 几乎总是比 GIF 或 PNG 更好),但正如您所观察到的,JPEG 压缩会有所不同相当多取决于输入的照片。一张简单的图片将比一张复杂的图片压缩得多。此外,这取决于您首先要压缩的图像类型——将 JPEG 重新编码为较小的 JPEG 不会给您带来很多好处。 JPEG 真正令人印象深刻的地方在于,与其他算法相比,它对原始、未压缩照片图像的压缩效果如何。
标签: ruby-on-rails ruby image paperclip