14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ファイルサイズを抑えてサムネイル画像を作成したい(mozjpeg, jpegtran, jpegoptim)

Last updated at Posted at 2017-01-28

画像を使っている各社サービスは多いはず。
数が多い場合は表示スピード、コストに影響するのでとても大事です。

そこで各種画像圧縮サービスを比較してみた。
非可逆圧縮(lossy)、可逆圧縮(lossless, 正確には画像最適化という言うべきらしい)、両方に関して着目しています。

TL;DR

image

mozjpeg圧勝

調査の目的

  • ファイルサイズを抑えてサムネイル画像を作成したい
    • lossy圧縮も検討
    • lossless圧縮もしたい
    • サイズ縮小のみを考慮してオプションを選択した
  • Linuxサーバで使いやすそうなやつにしたい
    • jpegminiも興味深かったが除外

調査しなかったこと

  • 処理にかかる時間
  • マシンリソース

対象

iPhone6 で撮影した適当に選んだ恥ずかしくない写真。
800KB〜3MB程度。

image

環境

macOS 10.11.6(15G1217) El Capitan

jpegoptim --version
jpegoptim v1.4.4  x86_64-apple-darwin15.6.0
Copyright (c) 1996-2016, Timo Kokkonen

libjpeg version: 8d  15-Jan-2012
Copyright (C) 2012, Thomas G. Lane, Guido Vollbeding
jpegtran -v
Independent JPEG Group's JPEGTRAN, version 8d  15-Jan-2012
Copyright (C) 2012, Thomas G. Lane, Guido Vollbeding
/usr/local/Cellar/mozjpeg/3.1_1

準備

# わかりやすくサンプル画像を連番にする
ls *.jpg | awk '{ printf "mv %s %02d.jpg\n", $0, NR }' | sh

# 毎回コピーしてやってます(findの結果からファイル名を取るのが面倒で…)
cp org/* ./

jpegtran

macには標準で入っている?
サイズ変更や回転もできるみたい。

find `pwd` -name "*.jpg" -maxdepth 1 -type f -exec jpegtran -copy none -optimize -outfile {} {} \;
mkdir jpegtran
mv *jpg jpegtran

jpegoptim

losslessだけでなく、lossyな圧縮もできる。

jpegoptim --strip-all *.jpg
mkdir jpegoptim
mv *jpg jpegoptim

jpegoptim(lossy, quality 80)

jpegoptim --strip-all -m80 *.jpg
mkdir jpegoptim80
mv *jpg jpegoptim80

mozjpeg

インストールが難しそうな空気を感じましたがbrewにありました。
ありがたや。

mozjpegにはいくつかのコマンドがあり、今回使ったのは、jpegtrancjpegです。

まずは、jpegtran。可逆圧縮をしてくれるものです。

brew install mozjpeg
find `pwd` -name "*.jpg" -maxdepth 1 -type f -exec /usr/local/Cellar/mozjpeg/3.1_1/bin/jpegtran -outfile {} -optimise -copy none {} \;
mkdir mozjpeg
mv *jpg mozjpeg

まずは、cjpeg。非可逆圧縮をしてくれるものです。

mozjpeg(lossy, quality 80)

find `pwd` -name "*.jpg" -maxdepth 1 -type f -exec /usr/local/Cellar/mozjpeg/3.1_1/bin/cjpeg -optimize -quality 80 -outfile {} {} \;
mkdir mozjpeg80
mv *jpg mozjpeg80

集計

# ファイル名とサイズをtab区切りにしてクリップボード => google spread sheetコピペ
ls -l */*jpg | awk '{print $9 "\t" $5}' | pbcopy

まとめ

mozjpeg圧勝

無駄だろうとは思いつつ、興味本位で、mozjpeg80に対してlossless圧縮を行ったところ、mozjpegに関してはちょっと小さくなった!

拡大して細かい部分を拡大してみました。左がオリジナル、右がmozjpeg(quolity 80)。

com1.png

com2.png

僕の古いモニタでは良し悪しがわからないです :smiley:
会社のmacbookで見てみたい。

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?