2009-07-26 6 views
1

インターネットから画像をダウンロードして後で表示するために保存するiPhoneアプリケーションがあります。通常のPNGをiPhoneに変換する最適化された形式

ユーザーは、UITableViewから表示するイメージを選択できます。テーブルビューには、さまざまなサイズの元のイメージのサムネイルを表示するカスタムセルがあります。

大きな画像を最初にダウンロードすると、サムネイルサイズにスケーリングされ、サムネイルはUIImagePNGRepresentationを使用して保存されます。

私がしたいのは、最適化されたiPhone PNG形式でサムネイルを保存することです。どうやってやるの?元の大きなイメージをメモリに読み込んで保存するだけで魔法のように起こるのでしょうか?保存する前にサムネイルをさらに処理する必要がありますか?

+0

良い質問です。私はあなたのアプリにPNGをコピーするときにXcodeがそれをするのを知っていますが、どうやってそれを動的に行うのかはわかりません。 –

+0

UIImagePNGRepresentationを使用して画像を保存するとき、最適化されたPNG形式が自動的に使用されるのではないでしょうか? – Amagrammer

+2

私はそれを疑う。 「最適化された」PNGは不適合であり、iPhoneイメージデコーダ以外では読み取れません –

答えて

2

UIImagePNGRepresentationは画像を作成しない可能性があります。これは、不適合なPNGであり、他の人が読むことができない可能性があります。彼らがAPIで読めないPNGを生成した場合は、それを記録すると思うし、電話からPNGをアップロードする人は誰もが動作しなかったことに気付くでしょう。

最適化は便利ですが、ほとんどの最適化されたPNGは、最適化がビルドプロセスの一部として実行されるUIの一部です。最適化を実行するコストは、その最適化によるコストを相殺する可能性があります。

+0

イメージではなく、ウェブからのものなのでデバイス用に最適化されていません。私が最適化されたフォーマットでイメージを保存することができれば、言及したコストは1回限りで、一度にユーザーはすでに「待機モード」になっています。 – oldbeamer

+0

もちろん、2点です。まず、それは多くの仕事になるでしょう。 2番目に最適化されたPNGは通常のPNGよりも効率的です。これはロスレスコンテンツ(UIなど)に必要です。 Webコンテンツの多くは損失の多いもの(JPG)であり、ファイルサイズの増加は圧縮解除よりもコストがかかります。デバイスのフラッシュが遅いことを覚えておいてください.60kのファイルを読み取るには12kよりも時間がかかります。あなたの元のソースが損失のあるものであれば、JPGを使用するだけです。 –

0

このように、最適化されたフォーマットで使用されるRGB565カラースペースは、CGGraphicsContextでは使用できません。これは、すべてのUIで使用されるすべてのUIで使用されるレンダリングクラスです。

イメージを保存する前にイメージの色空間を変更するコードを記述した場合、UIクラスにテクスチャを戻すことができませんでした。それを使用する唯一の方法は、OpenGLの内部に直接ロードし、私のアプリでOpenGLを使用することです。

0

「最適化されたPNG」形式は、大きな違いはありませんので、心配しないでください。

does not affect rendering speed at allであり、ローディング速度はdictated by file size more than file formatである。

最小のファイルを与える形式で保存するだけです。透明度を使用していない場合は、JPEGである可能性があります。

画像を保存するときに透明性が必要で、CPU時間を節約できる場合は、プログラムにpngquant(BSDライクなライセンスの下に)を入れて、これらのPNGを8ビットパレットに縮小します。

関連する問題