私はレールにペーパークリップを設定しましたが、すべてがうまく機能しています(実際にグーグルで検索する必要がありました... :)。
しかし、Page Speed は、サムネイルと大きな画像 (ペーパークリップが生成するもの) をロスレスでさらに圧縮できることを示していることに気付きました。これを行うモデルに入れることができるオプションはありますか? mod_deflate が画像を圧縮しないことに気付きました (私は Firefox を使用しています)。
私はレールにペーパークリップを設定しましたが、すべてがうまく機能しています(実際にグーグルで検索する必要がありました... :)。
しかし、Page Speed は、サムネイルと大きな画像 (ペーパークリップが生成するもの) をロスレスでさらに圧縮できることを示していることに気付きました。これを行うモデルに入れることができるオプションはありますか? mod_deflate が画像を圧縮しないことに気付きました (私は Firefox を使用しています)。
paperclip-compression gemを使用して、ペーパークリップ処理に圧縮を追加できます。
Gemfile で:
gem "paperclip-compression", "~> 0.1.1"
(もちろん、bundle install を実行します)
あなたのモデルでは:
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