我已经在rails中设置了回形针,并且一切正常(实际上我不得不用谷歌搜索... :)。
然而,我注意到 Page Speed 告诉我可以进一步无损压缩我的缩略图和大图像(回形针产生的图像)。我可以在我的模型中添加一个选项吗?我注意到 mod_deflate 不压缩图像(我使用的是 Firefox)。
我已经在rails中设置了回形针,并且一切正常(实际上我不得不用谷歌搜索... :)。
然而,我注意到 Page Speed 告诉我可以进一步无损压缩我的缩略图和大图像(回形针产生的图像)。我可以在我的模型中添加一个选项吗?我注意到 mod_deflate 不压缩图像(我使用的是 Firefox)。
您可以使用回形针压缩 gem向回形针处理添加压缩。
在您的 Gemfile 中:
gem "paperclip-compression", "~> 0.1.1"
(当然运行捆绑安装)
在您的模型中:
has_attached_file :avatar,
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:processors => [:thumbnail, :compression]
“ jpegtran通过重新排列压缩数据(DCT 系数)来工作,而无需完全解码图像。因此,它的变换是无损的”
注意:如果您在 heroku 上运行,则需要将 jpegtran 和 optipng 二进制文件添加到您的应用程序中。这是一篇关于在 heroku 上运行二进制文件的好文章。
您应该对各种 JPEG 压缩级别进行自己的测试,但我注意到我可以将 ImageMagicks 质量设置降低到 75 并且仍然看不到任何明显的差异 - 大约节省了 30-40% 的文件大小。
我的模型看起来像:
has_attached_file :photo,
:styles => {
:"185x138" => {
:geometry => "185x138>"
} },
:convert_options => {
:all => "-auto-orient",
:"185x138" => "-quality 75",
-quality 75
适用于 ImageMagick。如果您使用不同的处理器,则需要进行相应调整。
那么 FFMPEG 或 AVCONV 呢?
sudo apt-get install ffmpeg/avconv
= 初始化器
Paperclip.options[:command_path] = "/usr/bin/" # see `which ffmpeg`
= 模态
after_save :compress_with_ffmpeg
def compress_with_ffmpeg
[:thumb, :original, :medium].each do |type|
img_path = self.avtar.path(type)
Paperclip.run("ffmpeg", " -i #{img_path} #{img_path}")
end
end