RailsでMozjpegを使いたいっ!

jpeg画像のファイルサイズを良い感じに小さくしてくれるやーつ

Mozjpegのインストール

CentOSにMozjpegを入れます。yum installはできなそうだったので、ソースから。

curl -LO https://github.com/mozilla/mozjpeg/releases/download/v3.2/mozjpeg-3.2-release-source.tar.gz
tar xf mozjpeg-3.2-release-source.tar.gz
cd mozjpeg
yum install automake gcc nasm
./configure && make && make install

ln -s /opt/mozjpeg/bin/* /usr/local/bin
ln -s /opt/mozjpeg/share/man/man1/* /usr/local/share/man/man1

Gem追加

gem install mozjpeg

Rails(Ruby)

ま、ドキュメントに書いてあるまんまですが。

large_image = File.new('large.jpeg') # オリジナルのファイル
tiny_image = File.new('tiny.jpeg') # 圧縮されたファイル

Mozjpeg.compress(
  large_image,
  tiny_image,
  arguments: '-quality 70 -quant-table 2 -notrellis'
)

中身はcjpeg(非可逆の方)ですね。
ま、jpegtran(可逆の方)はqualityの指定ができないので当然と言えば当然ですが。

細かいオプションはそのうち調べてみようかなと思います。

参考

svoboda-jan/mozjpeg-ruby: JPEG and PNG compression using MozJPEG