LoginSignup
22
21

More than 5 years have passed since last update.

PNG画像のファイルサイズを小さくする

Last updated at Posted at 2017-02-04

スマートフォンアプリを作っていると、偉い人から「アプリの容量でかいよー、小さくしてー」なんて言われちゃったりしてさてどうしようかということになることがしばしばあります。
そんなときはまず使っていない画像や動画等のリソースを削除するのはもちろん、コンパイルの最適化オプションを上げてみたりしてなんとかがんばるのですが、努力にも限度があります。
なんで、PNG画像を再圧縮することで容量を小さくしてみるのが良いでしょう。
デザイナーがPhothoshopで作ったPNGファイルをアプリにそのまま組み込んでいる場合は、PNG画像を再圧縮することでサイズを小さくすることが期待できます。

PNGの最適化ツール

PNGの最適化ツールには、可逆圧縮のPngcrushOptiPNG、非可逆圧縮のpngquantといったものがあります。
その中で高い圧縮率を誇るzopflipngを使ってみます。

zopfli とは

zopfliは2013年にGoogle社が発表した新しい圧縮アルゴリズムです。
PNGに使われていたdeflateという圧縮アルゴリズムよりも数%の改善を見込めるアルゴリズムですが、圧縮にむっちゃ時間がかかります。

zopfliはdeflate互換なので、zopfliで圧縮したPNGも従来のPNGビューアで表示できます。

インストール (Mac)

HomeBrewからインストールできます。

brew install zopfli

使ってみる

基本的な使い方

zopflipng input.png output.png

上書きする

zopflipng -y input.png input.png

-y オプションは上書き時に問い合わせしなくなるだけなので、なくてもかまいません。

もっと圧縮する

zopflipng -m input.png output.png

-m オプションを指定すると、圧縮率が高くなります。かわりに圧縮に時間がかかります。

とりあえずディレクトリ以下にあるPNGファイルを全部圧縮してみる (Mac/Unix)

find your/image/directory -iname "*.png" -exec zopflipng -m -y '{}' '{}' \;

結果例

あるiOSアプリの3MBにおよぶPNG画像群に対してzopflipngで圧縮したところ、PNG画像のサイズがおよそ 30%減 になりました。
OptiPNGの -o 7 オプションで圧縮した際にはおよそ 10%減 だったのに比べるとzopflipngが優秀なのがわかります。
Photoshopで作ったPNG画像をそのまま使っている場合には効果が高そうです。

22
21
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
22
21