[iPhone SDK] 最適化PNGファイルの動的作成
iPhone Application Programming Guide(developer only)にもあるように,PNG画像は圧縮した方がいいらしい.
XCodeでリソースとして使用するPNG画像は,自動的に圧縮,最適化される.最適化はビルド時にcopypngというコマンドラインツールで自動的に処理される.以下,XCodeの設定項目.デフォルトでPNG画像は圧縮される.
UIImageは,最適化PNGで作成したものの方が,描画が速いことがわかっている.あらかじめリソースとして使用するPNG画像は問題ないのだが,ネット経由でダウンロードしたJPEG,GIF,PNG画像は,そうではない.そこで,ダウンロードした画像や動的に作成した画像を最適化PNGに変換する必要がある.
そこで,takiuchi氏が最適化PNGを解析し,それを作成するコードを作ってくれた(すばらしい).しかもMIT Lisenceで公開,かつ「公開してもいいよ」ということなので,それに基づいてクラスにしてみた.
たとえば,ダウンロードしてきた画像ファイルには,以下のように使える.
--->NSData *downloadedData; NSData* optimizedPNG = [downloadedData optimizedData]; UIImage* optimizedImage = [UIImage imageWithData:optimizedPNG];
他にもQuartzなどでPNGを生成したとき,
--->UIImage* generatedImage NSData* optimizedPNG = [generatedImage optimizedData]; UIImage* optimizedImage = [UIImage imageWithData:optimizedPNG];
他の画像フォーマットから最適化PNG生成には,時間がかかるが,極めて素早くレンダリングしたい場合は,最適化PNGファイルにした方がいいと考える.
http://code.google.com/p/sonson-code/source/browse/#svn/trunk/iPhone2.0/OptimizedPNG