現在40MBのiPhoneゲームで使用したい背景ファイルがあります。これは .png ファイルであり、品質をあまり損なうことなく、またアルファ チャネルを失うことなく、可能な限り最小のサイズに圧縮したいと考えています。ファイルタイプを.jpgファイルに変更するだけで、同様に大きなファイルのファイルサイズを正常に変更できました。ただし、この画像には透明度がありませんでした。私が知る限り、透明度を失うことなく .png を .jpg に変更することはできません。おそらく私は間違っているかもしれません (間違っている場合は訂正してください)。この .png ファイルを圧縮する方法があれば、その方法を教えてください。また、かなり大きなファイルですので、できれば5時間以内に圧縮した方がいいと思います。ありがとう!
3 に答える
どのようにゲームを構築していますか?OpenGLを直接使用していて、OpenGLが提供する圧縮に満足している場合、PVRは、はるかに小さくて非常に高速な画像に最適な形式です。
keegan3dが言ったように、XcodeはPNGCrushを使用してPNG画像を再圧縮します。バイト順序を変更し、アルファを事前乗算します。この記事では、何が起こるかを説明します:iPhoneの「最適化された」PNG
XcodeのPNG圧縮を有効のままにすると、PNG圧縮ツール( PNG圧縮およびiOSアプリ)を使用してもメリットはありません。
1つの画像に対してのみXcodeの圧縮を無効にしたい場合(別の圧縮ツールを使用できるようにするため)、ここで説明するように、ファイルタイプをからimage.png
に変更できると思います: 1つのPNGの圧縮をスキップするにはどうすればよいですか?file
そして...RAMの使用量には少し注意してください。JPEGとPNGは両方とも同じサイズに解凍されます(アルファがないと仮定します)。40MBはかなり大きいです。背景を描く他の方法はありますか?私は、ビットマップベースのビットマップ2048x2048プレイエリアを使用したゲームに取り組んできました。PVRとタイルを使用しています。PVRイメージはPNGよりも少ないRAMを使用し、より高速です。
Xcode は png を圧縮します。ビルドされたアプリ内で実際に画像がどのくらい大きいかを確認する必要があります。Xcode がImageOptimを使用して画像を圧縮するよりも多くの画像を圧縮することは可能ですが、画面に表示するのが少し遅くなります。これはおそらく背景画像の問題ではありません。
私のベンチマークでは、最小サイズで最速の読み込み PNG 画像は、ImageAlpha / pngquantで作成された PNG8+alpha でした。
背景がほぼフラットまたは単色である (ぼかしやグラデーションがあまりない) 場合は、PNG8+alpha で問題なく表示されます。
PNG24+alpha 画像をスマートな方法でポスタライズすることにより、圧縮率を向上させることができます。
ただし、40MB の PNG 画像は依然として巨大です。それがあなたのメモリの問題を引き起こしていたとしても、私は驚かないでしょう. 小さなタイルに分割することを検討してください。