Создание и запись палитры RGBA PNG с использованием NSImage
Я пытаюсь создать изображение PNG с палитрой (8 бит на пиксель), использующее палитру RGBA (32 бит на запись палитры), используя платформу Cocoa *.
Я пробовал несколько комбинаций для [NSBitmapImageRep initWithBitmapDataPlanes:…]
метод. Кажется, для создания соответствующего растрового изображения для bitsPerSample:2
bitsPerPixel:8
,
Однако, когда я пытаюсь написать такое растровое [NSBitmapImageRep representationUsingType:NSPNGFileType…]
Я получил:
libpng error: Invalid bit depth for RGBA image
Если я попробую другие битовые глубины, я получу 32-битное изображение на пиксель (без палитры).
*) Я знаю, что могу просто использовать libpng
, но это не тот ответ, который я ищу.
1 ответ
2 бита на семпл, 8 на пиксель не принесут вам индексированный PNG- теоретически он создаст PNG-файл RGBA с 2 битами на семпл, как и предполагалось. Теперь такое изображение имеет 256 возможных значений цвета на пиксель (включая альфа-канал), но оно не индексируется в смысле наличия таблицы поиска цветов.
Насколько мне известно, нет возможности указать цветовую палитру при использовании NSBitmapImageRep
, Вам, вероятно, придется использовать libpng
непосредственно, чтобы получить эффект, который вы хотите. (Кстати, это не имеет значения, если вы не ищете этот ответ. Это все еще правильный ответ на эту конкретную проблему, и сказать "нет!" Не изменит вселенную вокруг вас.)
Однако, прежде чем вы это сделаете, если вы сообщите нам, почему вы думаете / знаете, что вам нужен индексированный PNG, мы сможем указать вам лучшее или более простое решение.