0

Cocoa フレームワーク* を使用して、RGBA パレット (パレット エントリあたり 32 ビット) を使用するパレット PNG 画像 (ピクセルあたり 8 ビット)作成しようとしています。

[NSBitmapImageRep initWithBitmapDataPlanes:…]メソッドの組み合わせをいくつか試しました。に適したビットマップを作成しているようですbitsPerSample:2 bitsPerPixel:8

ただし、そのようなビットマップを書き込もうとすると、次のよう[NSBitmapImageRep representationUsingType:NSPNGFileType…]になります。

libpng error: Invalid bit depth for RGBA image

他のビット深度を試すと、1 ピクセルあたり 32 ビット (パレットなし) の画像が得られます。


*) を使用できることはわかっていますlibpngが、それは私が探している答えではありません。

4

1 に答える 1

2

サンプルあたり 2 ビット、ピクセルあたり 8 ビットでは、インデックス付きの PNG は得られません。理論的には、サンプルあたり 2 ビットの RGBA PNG ファイルが作成されます。現在、このような画像には、ピクセルごとに 256 の可能なカラー値 (アルファ チャネルを含む) がありますが、カラー ルックアップ テーブルを持っているという意味ではインデックスが付けられていません。

私の知る限り、を使用するときにカラー パレットを指定する方法はありませんNSBitmapImageRep。必要な効果を得るには、おそらくlibpng直接使用する必要があります。(ちなみに、この答えを探していなくても問題ありません。この特定の問題に対する正しい答えであり、「いいえ!」と言っても、あなたの周りの宇宙は変わりません。)

ただし、それを行う前に、インデックス付きの PNG が必要だと思う/知っている理由を教えていただければ、より優れた、またはより簡単な解決策を示すことができる場合があります。

于 2011-02-06T23:56:22.627 に答える