使用Libpng创建2位色深PNG图像

时间:2013-02-14 14:30:04

标签: colors depth libpng

我想用库Libpng生成1位(2种颜色)或2位(4种颜色)深度的PNG图像。

有人知道怎么做吗?我测试了一些例子,它们似乎都适用于8位色深?

我知道png_set_IHDR但是在我测试的例子中,当我将png_set_IHDR中的深度参数从8更改为2或1时,我的程序绘制了一个2或4的像素。我认为,这是由于使用png_malloc功能。

在我尝试修改(http://www.lemoda.net/c/write-png/)的示例中,png_malloc函数使用sizeof uint8_t分配图像的所有像素。

png_malloc (png_ptr, sizeof (uint8_t) * bitmap->width * pixel_size);

你能告诉我如何分配1位或2位像素吗?

感谢的 Jo2s

1 个答案:

答案 0 :(得分:1)

在png_set_IHDR中,bit_depth参数设置所有颜色分量的位深度。与PNG_COLOR_TYPE_RGB一起,您最终得到一个红色组件,一个用于绿色,一个用于蓝色。

你应该用PNG_COLOR_TYPE_PALETTE调用png_set_IHDR,然后如果bit_depth是1,你必须有一个有两种颜色(0和1)的调色板,如果bit_depth是2,一个有四种颜色(0到3。)