我正在尝试使用Cocoa框架*创建使用RGBA调色板(每个调色板条目32位)的调色板 PNG图像(每像素8位)。
我为[NSBitmapImageRep initWithBitmapDataPlanes:…]
方法尝试了几种组合。它似乎为bitsPerSample:2
bitsPerPixel:8
创建了合适的位图。
然而,当我尝试使用[NSBitmapImageRep representationUsingType:NSPNGFileType…]
编写这样的位图时,我得到:
libpng error: Invalid bit depth for RGBA image
如果我尝试其他位深度,那么我得到每像素32位(非调色板)图像。
*)我知道我可以使用libpng
,但这不是我正在寻找的答案。
答案 0 :(得分:2)
每个样本2位,每个像素8个不会得到索引的PNG - 从理论上讲,它将创建一个每个样本2位的RGBA PNG文件,正如它所暗示的那样。现在,这样的图像每个像素有256个可能的颜色值(包括alpha通道),但是在具有颜色查找表的意义上它没有被索引。
据我所知,使用NSBitmapImageRep
时无法指定调色板。您可能必须直接使用libpng
来获得所需的效果。 (顺便说一下,如果你不是在寻找这个答案,那也没关系。这仍然是这个特定问题的正确答案,并说“不!”不会改变你周围的宇宙。)
但是,在你这样做之前,如果你告诉我们为什么你认为/知道你需要一个索引的PNG,我们可能会指出你更好或更简单的解决方案。