2014-01-08 19 views
5

私はiOSアプリケーションを作成していますが、私は答えが見つからないpngとパフォーマンスの使用に関するいくつかの質問があります。iOSのPngの - pngのバンドルのダウンロード - png8とpng24

私のアプリは2つのソースからのpngを使用し、いくつかはアプリバンドルにあり、その他はインターネットからダウンロードしてローカルに保存します。アプリバンドルのもの私は頭がおかしく、xCodeはアプリがコンパイルされるときにiOS用に最適化されていることを知っています(Byte SwappingとPremultiplied Alpha)。インターネットからダウンロードしたPNGについて、次の質問があります。

1)イメージがバンドル内にダウンロードされている場合は、iOSでpngを使用することによるパフォーマンス上の利点がありますか。ダウンロードした画像にxCodeの最適化を適用することはできますか?

2)ファイルサイズ以外に、png8とpng24を使用する利点(または欠点)はありますか?ローカルファイルから展開した場合、メモリ使用量は少なくなりますか?それを拡大する努力はそれほどかかりませんか?アニメーションのパフォーマンスが向上していますか?または、ファイルサイズが小さく、ダウンロード時間が短い唯一の恩恵ですか?

ご回答ありがとうございます。

ポール

答えて

3
  1. PNGの最適化は、pngcrush(Appleの独自のバージョンによって行われているにもかかわらず、その作者状態

    [...] 2.変更したバージョンはかかるものとして明白にマークしなければならないと偽って示してはなりません元のバイナリまたはソースとして(http://optimate.dl.sourceforge.net/project/pmt/pngcrush/1.7.70/pngcrush-1.7.70-HELP.txt

    - ただし、アップルはそのような詳細を気にしません)。 pngcrushは、ソースをコンパイルしたときにXCodeによって呼び出されます。コンパイル後、XCodeは、後でダウンロードしたイメージとは何も関係ありません。ただし、Appleのpngcrushを適用して新しい画像をアップロードする前に「最適化」することができます。私の点では、これが努力する価値があるかどうかは疑問です。

  2. これは、4回連続しています。 (正しくカウントしている場合)8ビットPNGは24ビットPNGの3倍です。 3または4(RGB、RGBA)の代わりに1バイトで作業するより速くする必要があります。当然それはより少ないメモリを使用します。それは主に(または場合によっては)画像の内容に依存します。写真画像はPNGのアルゴリズムでひどく圧縮され、8ビットカラーインデックスモードで保存すると色の量子化が問題になります。同じ色の大きな領域を持つ典型的な「コンピュータ」イメージ(テキストエディタのスナップショットなど)は、非常に高速に圧縮解除される可能性があります。

あなたは、8ビットのPNG画像を使用する場合は、Appleの修正版が適用されることを「最適化」は使用されません。その主な変更は、おそらくiPhone/iPadのディスプレイに合わせてRGB(A)を並べ替えることです。 (副次的な目的は、画像を有効なPNG形式で無効にすることです)。

+0

pngcrushへの、Appleの変更に関するCAUTIONブロックの興味深いリンク:https://code.google.com/p/imageoptim/source/browse/pngcrush/pngcrush.c?r=7e1f81345dccaf98134f4f3cf33368b66b48e12e個人的には、アップルにはちょっとひどい - 彼らはバージョンを促進するような方法でpngcrushを配布していない.Xcodeの中に埋もれていて、珍しい開発者だけがそれに乗り遅れている。彼らがバージョンを/ usr/binに入れたら、それでは不一致はありません。 –

+0

ありがとう@Jongware、かなり役立つthats。私が2番を正しく読んだら、png8の画像は、iPhoneでメモリにロードされたとき、png24と同じ画像よりも少ないメモリを使います。あれは正しいですか? – Paul

+0

@Paul:不明。アクティブなメモリに読み込まれると、イメージはa.s.a.p.に変換される可能性があります。 〜24ビット*とにかく*ディスプレイが必要とするものであるからです。その場合、唯一の保存されたメモリは静的ストレージであり、(小さな)再着色ペナルティとフルカラーバージョン用のメモリが追加されます。 – usr2564301

2

バンドルに入れて、Xcodeで「圧縮PNG」オプションをオンにすると、Xcodeのは、上のスレッドがたくさん、ロード(通常は元より大きくするために速く、それらを作るためにPNG画像を再フォーマットSOのこの動作!)。

本当に好奇心が強い場合は、アプリのビルドフォルダを見て、変更したpngを調べます。表示されるオプションは、iOSの現在の最適なオプションです。実際、iOSがやっていることを模倣するために(ImageMagikのような)画像変換プログラムにどのようなオプションを与える必要があるのか​​議論しているスレッドを漠然と思い出しています。

EDIT:Jongware(その他の回答)が示唆しているように、Xcodeはpngcrushの修正版を使用しているようです。これらの画像オプションを評価している誰かにlink

+0

ありがとう、あなたの編集に役立つリンク。 – Paul

関連する問題