2

どうすればこれを達成できますか?プログラムによる解決策(Objective-c)は素晴らしいですが、非プログラム的な解決策でも良いです。

私はpixelmatorを持っています->しかし、それはあなたにオプションを与えません。プレビューでもできないようです。

グーグルを試しましたが、今のところ解決策を見つけることができませんでした。これを行うために使用できる唯一のツールはTexturePackerですが、これによりスプライトシートが作成されます。

4

5 に答える 5

6

libpngを使用して、PNG イメージを 3 バイト (8:8:8) RGB に変換できます。次に、RGB565 の 5:6:5 16 ビット カラー値にダウンサンプリングできます。rg、およびがそれぞれ 8 ビット カラー (unsigned char 型で格納) の場合b、16 ビット RGB565 値は次のようになります。

((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3)

切り刻む代わりに丸めることで、値がオーバーフローしないように注意して、これを少し改善できます。元の 8 ビット値がすべて等しい場合、緑の値を青と赤の値と等しくすることもできます。そうしないと、元は灰色だった色が、変換後に誤って色を帯びてしまう可能性があります。

于 2012-04-12T14:58:51.340 に答える
2

PNGはRGB565パッキングをサポートしていません。いつでも画像にポスタライズを適用できます(プログラムで、ImageMagickで、または任意の画像エディタで)。これは、各チャネルの下位ビットを破棄することになります。PNGに保存する場合、(パレットを使用しない限り)チャネルあたり8ビットを節約できますが、それでもPNG圧縮により、サイズが大幅に縮小されます。

簡単な例:オリジナル:

ここに画像の説明を入力してください

XnViewで適用された32レベル(RGB555に相当)の単純なポスタライズ後

ここに画像の説明を入力してください

サイズは89KBから47KBになりますが、品質の低下はわずかです。グラデーションのある合成画像の場合、品質の低下がはるかに顕著になる可能性があります(バンディング)。

于 2012-04-13T17:20:33.273 に答える
2

Quartz を使用してカラー RGB565 のビットマップ コンテキストを作成し、このコンテキストで PNG をペイントし、このビットマップ コンテキストをファイルに保存します。

于 2012-04-13T04:18:13.350 に答える
0

常に正しいウィキペディアによると、唯一の 16 ビット PNG はグレースケール PNG です。 http://en.wikipedia.org/wiki/Portable_Network_Graphics

通常どおり 32 ビット (アルファ) または 24 ビット (アルファなし) の PNG をプロジェクトに追加し、Cocos2D でテクスチャ形式を設定すれば、すべて問題ありません。そのためのコードは次のとおりです。

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGB565];
于 2012-04-12T15:47:18.310 に答える