2015/2/25 水曜日

■ 透過PNG 減色 軽量化

Filed under: PC — inor @ 17:19:17

透過付きの大きなPNGファイルのサイズを削るためにいろいろ試してみた。
おっさん的にはこの分野はOPTPiXがいいんだろうなあっていう気持ちはあったのだけど、既にあれは企業向けの製品しか無くなっているので今回はスルー。大昔に買ったweb向けのやつは透過に対応してないので残念無念。

で、windows用フリーソフトに絞って捜します。

まず減色方面から調べてみて評判のいい感じだったcolgaとPNGColorReducerPro(シェアだけど)っていうのを試してみたのだけど、色味が変わり過ぎちゃってまったくだめ。今回の用途にはまったく使えませんでした。色味の傾向は考慮していないっぽい。あかんて。多分自然物とか色味が単純なものなら問題無いかと思います。

次にCaesiumを試してみた。 んがこれはPNGのサイズ圧縮はサポートしていなかったし、PNGの保存を行うとファイル容量が増える。おそらく圧縮率を低くして展開速度を速くする設定になっているっぽい。Jpegに使うにはとても評価の高いソフトです。 ちとインストール時にトラブルがあったのだけどそれは後述。

続いてPngyuを試す。これは透過情報を消さずに256色に減色するツールで、web系のツールでも人気のある変換サービスと同じアルゴリズムを使っているそうで人気があるみたい。最初に使ったツールのこともあってあんまり期待しないで使ってみたらまービックリしたこと。色味もちゃんと確保したまま綺麗に減色してくれました。これすごい。めちゃくちゃ効果ある。これは感動的だわ。
ただやっぱり単純に面積が大きくて色が多い画像は細部のアラが目立ってしまう。これについては後述します。

最後にPNGGauntletを試します。これもCaesiumと同じく減色とかはしませんが不要情報削除やアルゴリズムで勝負して小さくするソフトです。これもすごい。ドカンと小さくなることはあまりありませんがきっちり削り取ってくれます。ただちょっと処理が長い。かなり頑張って処理をしている模様。

おまけでFireworksを試しました。色味のパレット割り当てはいいしファイルサイズもいいのですが、減色がディザの誤差分散しか持ってないので見た目がよろしくないので選外です。これ、ここを拘って作っていたらもっと延命できたんじゃ無いかなあ…。

今回得た結論としては、Pngyuにかけてから、PNGGauntletを通す。これ。フルカラーPNGの場合驚くほど小さくなります。

大きな面積の画像への対応ですが、単純な話で画像をいい感じに分割してからPngyuに放り込んで処理させて。再度くっつけてフルカラーで保存します。それをPNGGauntletにぶっこみます。
Pngyuで処理した個々のファイルの合計容量よりもけっこう大きくなってしまうものの、オリジナルの画像よりはかなり節約が可能です。

Caesiumのトラブルについては、どうもうちのPCではタイトルが出てはすぐ消えて正常な起動をしなかったので、原因を探してみたのですが標準で入っているsetting.iniが原因だったようです。ポータブル版のsetting.iniを消したら起動しました。インストーラー版の方はそれをやっても無理でした。なんでだ。(vectorから落とした1.3は普通に動きましたがバージョンが古すぎる)

・実験結果

元ファイル、2000×2000くらいで透過付き。約1.1MB。(業務ファイルなので減色結果は見せられない)
Pngyu 250kb 恐ろしい減色最適化と圧縮能力だが大きな画像に使うとさすがに細部の欠損が結構目立ったりする。
Gauntlet 9.9MB 減ってはいるがこの量ではちょっと今は使う意味がない。元が悪すぎるだけ。

元を分割後Pngyuでそれぞれ圧縮。あわせて260kbに。
それをPhotoshopで読み込んで組み合わせて保存すると500kbに。(web用で保存すると800kbに膨らむ。)

ここで260kbそのままで保存してくれてたらバンザイだったのだけど分割した分のパレットの増加や再計算が入るのでそんなに美味しくは無い。

最後にこれをGauntletで処理すると400kbほどになる。もう一声欲しいけれど十分許容サイズ。(web用に保存した物でもこのくらいに減る。)

・まとめ

クオリティが並でいい物、小容量化に拘らない物はPngyuだけで良い。

小容量化に拘る場合はPngyuを通してPNGauntletへ。時間はかかるので急いでいる時は注意。

綺麗に扱いたい物については分割してPngyuを通してPNGauntletへ。

Caesium でのjpeg圧縮は評判通り良い。ノイズ対策に多少の調整は必要。

元ファイルは別フォルダや纏めてzipなどにして残しておく。

注意点としては、Photoshopdでインデックスカラーの半透明を扱えるようになったのはCS6かららしい。FireworksならCS5とかでも大丈夫。

Pngyu
http://nukesaq88.github.io/Pngyu/

PNGGauntlet
http://pnggauntlet.com/

Caesium
http://caesium.sourceforge.net/

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

HTML convert time: 0.133 sec. Powered by WordPress