0

我正在尝试使用 Cocoa 框架*创建使用 RGBA 调色板(每个调色板条目 32 位)的调色板PNG 图像(每像素 8 位)。

我尝试了几种[NSBitmapImageRep initWithBitmapDataPlanes:…]方法组合。它似乎为bitsPerSample:2 bitsPerPixel:8.

然而,当我尝试用我写这样的位图时,[NSBitmapImageRep representationUsingType:NSPNGFileType…]我得到:

libpng error: Invalid bit depth for RGBA image

如果我尝试其他位深度,那么我会得到每像素 32 位(非调色板)图像。


*)我知道我可以使用libpng,但这不是我正在寻找的答案。

4

1 回答 1

2

每个样本 2 位,每个像素 8 位不会为您提供索引 PNG——理论上,它会创建一个每个样本 2 位的 RGBA PNG 文件,正如它所建议的那样。现在,这样的图像每个像素(包括 Alpha 通道)有 256 个可能的颜色值,但在颜色查找表的意义上它没有被索引。

据我所知,使用NSBitmapImageRep. 您可能必须libpng直接使用才能获得所需的效果。(顺便说一句,如果你不寻找这个答案也没关系。它仍然是这个特定问题的正确答案,说“不!”不会改变你周围的宇宙。)

但是,在您这样做之前,如果您告诉我们您为什么认为/知道您需要索引 PNG,我们可能会为您指出更好或更简单的解决方案。

于 2011-02-06T23:56:22.627 回答