マルチな環境で動作する"jpegoptim"との対決は、劣化の最適化が決め手![JPGダイエット対決 vol.01]

ハロウィンも終わり、11月になりましたね!今年もあと二ヶ月です。年末に向けてイベントも多いし、忘年会もあるし、飲みすぎ食べすぎには注意しましょう!お酒を飲む前に脂分を含むものを食べたりして、アルコールの吸収を抑えるようにすると悪酔いしないみたいです!

JPGダイエット対決シリーズの記事はこちら。

画像最適化ツール "jpegoptim" vs "LightFile Core"

今回のテーマは、LightFile Coreの実力をみなさんに知ってもらうために、競合との差を比較しようと思います。画像の最適化ツールは一般的な処理のため、さまざまなツールが存在します。GUI(Graffic User Interface)のものだとPhotopshopが有名ですね。OS標準のツールもあります。CUI(Charactor User Interface)だと、ImageMagickなどがあります。

そんな中、今回の対戦相手はマルチな環境で動作する jpegoptim です!

競合との比較にはどんなメリットがあるの?

ウェブサービスの導入や、ツールの選定時は、さまざまな情報を調べてから選択することが多いです。または、業界標準となっている場合はそれらのデファクトスタンダードを選択するということも多いです。

ウェブサービスやツールは、動作条件や機能が似ているようで異なっていたりすることが多く、比較情報はかなり有益な情報源となります。この競合対決シリーズでは、そんなツール選定で苦労されている方の手助けになれば幸いです。おおよそのメリットは、こんな感じです。

  1. 画質最適化ツールの比較ができる
  2. 画像最適化ツールの情報がわかる
  3. 比較結果が得られる

それでは、いざ勝負!

素材は美味しそうな果物が並ぶ色鮮やかなJPG

2400-lfc-low.jpg美味しそうなフルーツが盛りだくさんの写真ですね!ちなみにこの写真はすでにLightFile Coreの画質低で最適化されたものです。どうですか?問題ない画質じゃないですか?
※ ただしファイルアップロード時に、CMSで多少加工されています。比較JPGは、すべてZIPファイルでダウンロードしてローカルで比較いただけます(ページ下部参照)

勝負ポイントは、画質とファイルサイズに限定

ポイントは、2点に絞りました。というよりも、画像最適化の結果は、この2点以外にないからです。いかに劣化させずに、ファイルを軽くするか。これを追求するのが画像の最適化ツールなのです。

  1. 画質の劣化具合
  2. 画像のファイルサイズ

jpegoptimをインストールして試してみる

jpegoptimは、Macを利用されている方でHomebrewをインストールして入れば、あっという間にインスト−するすることができます。

brew install jpegoptim

とターミナルに打ち込みましょう。そうすると、

$ brew install jpegoptim
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
feedgnuplot      gibo             htmldoc          jenkins          libconfig        shairport-sync   sslh             telegram-cli

==> Installing dependencies for jpegoptim: jpeg
==> Installing jpegoptim dependency: jpeg
==> Downloading https://homebrew.bintray.com/bottles/jpeg-9b.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring jpeg-9b.sierra.bottle.tar.gz

これでインストールは完了です。

とりあえずヘルプを見てみましょう。

$ jpegoptim -help
jpegoptim v1.4.4  Copyright (c) 1996-2016, Timo Kokkonen
Usage: jpegoptim [options]  

  -d, --dest=
                    specify alternative destination directory for 
                    optimized files (default is to overwrite originals)
  -f, --force       force optimization
  -h, --help        display this help and exit
  -m, --max=
                    set maximum image quality factor (disables lossless
                    optimization mode, which is by default on)
                    Valid quality values: 0 - 100
  -n, --noaction    don't really optimize files, just print results
  -S, --size=
                    Try to optimize file to given size (disables lossless
                    optimization mode). Target size is specified either in
                    kilo bytes (1 - n) or as percentage (1% - 99%)
  -T, --threshold=
                    keep old file if the gain is below a threshold (%)
  -b, --csv         print progress info in CSV format
  -o, --overwrite   overwrite target file even if it exists (meaningful
                    only when used with -d, --dest option)
  -p, --preserve    preserve file timestamps
  -P, --preserve-perms
                    preserve original file permissions by overwriting it
  -q, --quiet       quiet mode
  -t, --totals      print totals after processing all files
  -v, --verbose     enable verbose mode (positively chatty)
  -V, --version     print program version

  -s, --strip-all   strip all markers from output file
  --strip-none      do not strip any markers
  --strip-com       strip Comment markers from output file
  --strip-exif      strip Exif markers from output file
  --strip-iptc      strip IPTC/Photoshop (APP13) markers from output file
  --strip-icc       strip ICC profile markers from output file
  --strip-xmp       strip XMP markers markers from output file

  --all-normal      force all output files to be non-progressive
  --all-progressive force all output files to be progressive
  --stdout          send output to standard output (instead of a file)
  --stdin           read input from standard input (instead of a file)

かなりいろいろな事ができそうですね!この中のオプションから、今回は以下のオプションを利用します。

  1. --strip-all メタデータをすべて削除する
  2. --strip-exif メタデータのうち、exif情報のみを削除する
  3. -m画質 画質を設定する

このメタデータ削除と、画質の組み合わせで調整します。

jpegoptimのコマンドの実行結果は以下のとおりです。オプションなしでも最適化が走るようですが、何をしているかがわかるほうが良いのでオプションを指定しましょう。

まずは、オプションなしで実行しました。-t をつけていますが、これは処理を標準出力してくれるのでわかりやすくするためにつけています。

$ jpegoptim -t /path/to/jpegoptim.jpg 
/path/to/jpegoptim.jpg 2400x1727 24bit N Exif XMP IPTC ICC JFIF  [OK] 4026062 --> 3874961 bytes (3.75%), optimized.
Average compression (1 files): 3.75% (148k)

画質オプションはなし、メタデータはすべて削除したもの

$ jpegoptim --strip-all -t /path/to/jpegoptim-strip-all.jpg 
/path/to/jpegoptim-strip-all.jpg 2400x1727 24bit N Exif XMP IPTC ICC JFIF  [OK] 4026062 --> 3871739 bytes (3.83%), optimized.
Average compression (1 files): 3.83% (151k)

画質オプションはなし、メタデータはexif情報のみ削除したもの

$ jpegoptim --strip-exif -t /path/to/jpegoptim-strip-exif.jpg 
/path/to/jpegoptim-strip-exif.jpg 2400x1727 24bit N Exif XMP IPTC ICC JFIF  [OK] 4026062 --> 3874855 bytes (3.76%), optimized.
Average compression (1 files): 3.76% (148k)

画質95、メタデータはすべて削除したもの。70%近い削減!

$ jpegoptim --strip-all -m95 -t /path/to/jpegoptim-strip-all-m95.jpg 
/path/to/jpegoptim-strip-all-m95.jpg 2400x1727 24bit N Exif XMP IPTC ICC JFIF  [OK] 4026062 --> 1200399 bytes (70.18%), optimized.
Average compression (1 files): 70.18% (2759k)

画質85、メタデータはすべて削除したもの。80%を超える削減!

$ jpegoptim --strip-all -m85 -t /path/to/jpegoptim-strip-all-m85.jpg 
/path/to/jpegoptim-strip-all-m85.jpg 2400x1727 24bit N Exif XMP IPTC ICC JFIF  [OK] 4026062 --> 645107 bytes (83.98%), optimized.
Average compression (1 files): 83.98% (3302k)

画質50、メタデータはすべて削除したもの。90%を超えた削減!

$ jpegoptim --strip-all -m50 -t /path/to/jpegoptim-strip-all-m50.jpg 
/path/to/jpegoptim-strip-all-m50.jpg 2400x1727 24bit N Exif XMP IPTC ICC JFIF  [OK] 4026062 --> 313684 bytes (92.21%), optimized.
Average compression (1 files): 92.21% (3625k)

画質指定をすると、だいぶ画像が最適化されますね!すべてメタデータは削除して、以下の3つの結果が得られました。

  • 元画像 約4MB
  • 画質95 約1.2MB(約70%)
  • 画質85 約645KB(約84%)
  • 画質50 約314KB(約92%)

かなりの最適化です!さて、LightFire Coreはこの結果に勝てるのか?!

LightFile Coreでの処理結果

LightFile Coreは、画質設定が4段階で可能です。それぞれの処理結果をまとめます。

  • 元画像 約4MB
  • 画質最高 約992KB(約75%)
  • 画質高  約648KB(約84%)
  • 画質普通 約549KB(約86%)
  • 画質低  約225KB(約96%)

けっこうギリギリな勝負結果となりましたが、ファイルサイズにおいては 約89KB(約4%) ほど、LightFile Coreの画質低が軽くなりました!

結果発表

jpegoptimの画質が低いものを「50」と定義した上でですが、LightFile Coreの「画質低」の方が軽量化することができました!もちろん、jpegoptimの画質を50よりも低くすればもっと軽くなると思います。あとは気になる劣化具合です。

2400-00_origin.jpg

元画像リサイズのみ [約4MB]

2400-jpegoptim-strip-all-m95.jpg
jpegoptim メタデータ削除、画質95のJPG [約1.2MB]

2400-jpegoptim-strip-all-m50.jpg

jpegoptim メタデータ削除、画質50のJPG [約314KB]

2400-lfc-best.jpg

LightFile Core で画質最高のJPG [約992KB]

2400-lfc-low.jpg

LightFile Core で画質低のJPG [約225KB]

さくらんぼのシズル感の劣化に注目

全体的にみると、正直画質の劣化は気になるレベルにはならないかもしれません。しかし、細部に目を向けるとその違いが現れてきます。今回は、左側の白いお皿の上にある、一番上の赤いさくらんぼに注目します。

00_origin.jpg
オリジナル画像
jpegoptim-strip-all-m95.jpg
jpegoptim メタデータ削除 画質95
jpegoptim-strip-all-m85.jpg
jpegoptim メタデータ削除 画質85
jpegoptim-strip-all-m50.jpg
jpegoptim メタデータ削除 画質50
lfc-best.jpg
LightFile Core 画質最高
lfc-low.jpg
LightFile Core 画質低

かなり差があることが見えてきますね。ツヤの部分がなめらかなものが劣化が少なく、ギザギザというかジャギーがでてきているものほど劣化が多いものとなります。さらに2倍に拡大したものがこちら。

2x-00_origin.jpg
オリジナル画像
2x-jpegoptim-strip-all-m95.jpg
jpegoptim メタデータ削除 画質95
2x-jpegoptim-strip-all-m85.jpg
jpegoptim メタデータ削除 画質85
2x-jpegoptim-strip-all-m50.jpg
jpegoptim メタデータ削除 画質50
2x-lfc-best.jpg
LightFile Core 画質最高
2x-lfc-low.jpg
LightFile Core 画質低

jpegoptim メタデータ削除 画質50と、LightFile Core 画質低がジャギーが多めに出ているのがわかります。ここで見ていただきたいのが、画像のが荒れている部分にブロックノイズのようなものの量です。ともにノイズが出ているのですが、jpegoptimよりもLightFile Coreの方がノイズが他の部分に馴染んでいるのがわかります。このノイズの表れ方が、LightFile Coreの最大の特徴なのです。

LightFile Coreは、画像を複数生成して、比較して決定する

img-what-is-lightfilecore.jpg

最大の特徴である独自アルゴリズムによる、劣化を最小限にしながらファイルサイズを軽量化する仕組みがあるので、LightFile Coreはきれいな状態を保ったままファイルを軽くすることができます。

画質評価指標SSIM(Structural Similarity)を利用した劣化評価をするので、他の最適化ツールのように決められた数値で単純に処理するのではなく、複数枚の画像を生成してからそれらをSSIMで評価し、劣化とファイルサイズが最適化したものを選び出すという、他にはない特徴があります。

LightFile Coreは、絶賛トライアル受付中です!ぜひ、お申し込みください(無料)!

最後に

いかがでしたでしょうか?
jpegoptimは、とても優れたツールでありながら、LinuxやWindows、Macでも動作するマルチな環境に対応した画像最適化ツールです。まずは軽量化をやってみたい!という方にはとてもオススメです。また、GUIではなくCUIでやりたいという方も多くいるので、かなり重宝されているツールでもあります。

忘年会などで泥酔した写真を撮られても、JPGダイエットしてファイルが軽くなれば、メール添付もできますし、SNSツールでも簡単にアップロードできますね!年末にやっちゃった感を残さないためにも、悪酔いしないように心がけましょう!

今回評価した画像は、こちらのZIPファイルでダウンロード可能です。ファイルサイズが重いので、ご注意ください。また、この画像を利用したい場合は、あわせて素材サイトのURLを記載しておきます。

メール無料相談

お聞きになりたいことはありませんか? この記事の筆者 グロースハッカー能勢 がまずはメールで疑問やお悩みを伺います! フォームよりお気軽にお寄せください。

前へ前へ

CMSMix Sapporo Vol.3 (Drupalの回) に参加しました!

次へ次へ

CMSのランキングプラグイン厳選8種類と、Webサービス型のランクレット(#Ranklet)