Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

そこで各種画像圧縮サービスを比較してみた。
非可逆圧縮(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で見てみたい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした