iPhoneアプリのバンドルに同梱したPNGファイルは、ビルド時に最適化処理が行われてしまうため、そのままではlibpngで読み込むことが出来ません。iPhone向けに最適化されたPNGをlibpngで扱う方法は、いまのところ二つ。
1:最初から最適化をしないようにする
参考にしたページはこちら。
http://d.hatena.ne.jp/wasabi-arts/20090301/1235856525
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguSKimeHqAj-oFXRmGFHeIVs7yatDvezLQjD481u_hGDD33eoNAiVSPis9KK5I3ma_2QOwi9BVbbOOUpUKuYsIsuKFLpdYSOQwoGOakJ98rM9YvwD-g4LMjZM63czdbkj3XJ2So5XVpzY/s400/How+to+disable+optimization+of+PNG+for+iPhone.jpg)
このように、IPHONE_OPTIMIZE_OPTIONS=-skip-PNGsを追加するか、
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimH-xX4QedYa_0WJZy4s8WB60yOTrAVTvktbAahf3-3u9PiKyUKGxEXcHU8BG43NL-uWgzvdghqTPF8SyW_-Gq5mafY5WiIzfxAgHtNNGmH-b2L_jydcXXHtueHbb0VL84vGnVKrqGBNY/s400/How+to+disable+compress+of+PNG+for+iPhone.jpg)
またはこのように、最初っから圧縮をしないように設定する。
2:最適化したファイルをいったんUIImageで読み出して、再度PNGでファイル書きだしする
いったんUIImageを使って当該ファイルをロードして、ファイルにpng形式で書き出せばよいらしいです。
(@nakamura001さんありがとうございます!)
[2009/10/24 22:20追記]
@nakamura001さんがご自身のブログで検証結果をアップされてます。
http://d.hatena.ne.jp/nakamura001/20091024/1256371800
UIButtonからPNG画像を抜く方法ですが、これを応用すればUIButtonに最適化されたPNGを使用していても普通のPNG画像を取得することが出来ます。私の環境でもテストしたところ、うまくいきました!