使用NSImage创建和编写调色板RGBA PNG

时间:2011-02-06 21:46:14

标签: cocoa nsimage rgba nsimagerep png-8

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

我为[NSBitmapImageRep initWithBitmapDataPlanes:…]方法尝试了几种组合。它似乎为bitsPerSample:2 bitsPerPixel:8创建了合适的位图。

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

libpng error: Invalid bit depth for RGBA image

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


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

1 个答案:

答案 0 :(得分:2)

每个样本2位,每个像素8个不会得到索引的PNG - 从理论上讲,它将创建一个每个样本2位的RGBA PNG文件,正如它所暗示的那样。现在,这样的图像每个像素有256个可能的颜色值(包括alpha通道),但是在具有颜色查找表的意义上它没有被索引。

据我所知,使用NSBitmapImageRep时无法指定调色板。您可能必须直接使用libpng来获得所需的效果。 (顺便说一下,如果你不是在寻找这个答案,那也没关系。这仍然是这个特定问题的正确答案,并说“不!”不会改变你周围的宇宙。)

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