Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 使用Libpng创建2位颜色深度的PNG图像_Colors_Depth_Libpng - Fatal编程技术网

Colors 使用Libpng创建2位颜色深度的PNG图像

Colors 使用Libpng创建2位颜色深度的PNG图像,colors,depth,libpng,Colors,Depth,Libpng,我想用Libpng库生成1比特(2种颜色)或2比特(4种颜色)深度的PNG图像 有人知道怎么做吗?我已经测试了一些示例,它们似乎都可以使用8比特的颜色深度 我知道png_set_IHDR,但在我测试的示例中,当我将png_set_IHDR中的深度参数从8更改为2或1时,我的程序会绘制2或4的一个像素。我认为,这是由于使用png_malloc函数创建的内存分配 在我尝试修改()的示例中,png_malloc函数将图像的所有像素分配为sizeof uint8_t png_malloc (png_pt

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

有人知道怎么做吗?我已经测试了一些示例,它们似乎都可以使用8比特的颜色深度

我知道png_set_IHDR,但在我测试的示例中,当我将png_set_IHDR中的深度参数从8更改为2或1时,我的程序会绘制2或4的一个像素。我认为,这是由于使用png_malloc函数创建的内存分配

在我尝试修改()的示例中,png_malloc函数将图像的所有像素分配为sizeof uint8_t

png_malloc (png_ptr, sizeof (uint8_t) * bitmap->width * pixel_size);
您能告诉我如何分配1位或2位像素吗

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


您应该使用png_COLOR_TYPE_调色板调用png_set_IHDR,如果bit_depth为1,则必须使用两种颜色(0和1)的调色板,如果bit_depth为2,则使用四种颜色(0到3)的调色板。

直接使用位深度为1或2的
png_set_IHDR
完成。您还需要什么?对于PNG_颜色_类型_RGB,PNG规范只允许位深度8和16。因此,是的,您应该像Andre所说的那样使用PNG_颜色_类型_调色板。