RubyOnRails
画像

linuxで画像圧縮したいときのあれこれ

背景

Webサービスを運用する上で、サイトスピード向上を図るために画像の最適化をすることになりました。

今回はAWS上で管理する画像も含めて圧縮し直す方法も備忘録として残しておきます。

クラウドからダウンロード

まずは特定のS3上の特定のディレクトリからローカルに画像をダウンロード。

$ aws s3 cp /hoge/foo/image /local/image --recursive

cpの第一引数にS3上の管理ディレクトリ、第二引数にローカルディレクトリを指定します。

また、オプションで付けている --recursive はディレクトリを再帰的に読み込む役割をしてくれます。

このオプションがないとファイル指定でのダウンロードしか行えなくなるので注意です。

画像圧縮

基本的にGUIには頼りたくないのでコマンド入力で進めていきます。

画像の拡張子によって用いるツールが異なります。

JPG,JPEGの場合

jpegoptimで最適化

例:ファイルを指定
$ jpegoptim ファイル名 オプション名

例:ディレクトリ内全てのjpeg画像に対して
$ find . -name *.jpeg | xargs jpegoptim --max=90 —recursive

pngの場合

pngquantで最適化

例:ファイル名を変えずに上書きかつ圧縮率を指定
$ pngquant -f --ext .png --quality=60 hoge/*.png

クラウドに再アップロード

引数の順番を変えてあげるだけでおk
$ aws s3 cp /local/image /hoge/foo/image --recursive

まとめ

画像の最適化を行うと60-70%ほど画像の圧縮が図れます。

google speed insightsなどサイトスピードの評価が著しく悪かった場合は画像圧縮も検討してみてください。
https://developers.google.com/speed/pagespeed/insights/?hl=ja