Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
C++ 使用C+创建具有单一纯色的图像+;_C++_Image_Png - Fatal编程技术网

C++ 使用C+创建具有单一纯色的图像+;

C++ 使用C+创建具有单一纯色的图像+;,c++,image,png,C++,Image,Png,我想创建一个单一纯色的PNG(或其他格式)图像。如何在C++中实现这一点?< p>如果任何通用格式都是可接受的,那么编写一个PPM文件,它是一个看起来像的文本文件。 P3 2 3 255 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 第一行是PPM标题: “P3”标识文件格式, “2”是宽度, “3”是高度, “255”是样本值的范围(0..255) “255 0 0”是一个红色像素(红色=255,绿色=0,蓝色=0)。 重复“255 0 0”

我想创建一个单一纯色的PNG(或其他格式)图像。如何在C++中实现这一点?

< p>如果任何通用格式都是可接受的,那么编写一个PPM文件,它是一个看起来像

的文本文件。
P3 2 3 255
255 0 0
255 0 0
255 0 0
255 0 0
255 0 0
255 0 0
第一行是PPM标题: “P3”标识文件格式, “2”是宽度, “3”是高度, “255”是样本值的范围(0..255)

“255 0 0”是一个红色像素(红色=255,绿色=0,蓝色=0)。 重复“255 0 0”,直到定义了宽度*高度像素

然后,如果需要PNG,请使用ImageMagick、GraphicsMagick或其他转换器从PPM文件生成PNG。如果你想在程序中实现这一点,可以同时使用IcimeMaGek和GraphicsMagick两种C++绑定,或者只需使用命令行:

convert file.ppm file.png

PPM唯一的问题是它不支持alpha,因此如果需要alpha通道,这种方法会稍微复杂一些。一种方法是将alpha放在单独的PGM文件中(如PPM,但只有一个通道),然后将它们与ImageMagick或GraphicsMagick合并


马克·塞切尔编辑于。。。如果你想进一步了解Glenn的建议,这里有一个很好的描述。

PNG对于初学者来说是非常非常难的格式。从BMP(如果有信心)或PPM(非常简单)开始。加油,格伦!我希望你不介意我添加一个链接。@MarkSetchell当然,请继续。顺便说一句,虽然我非常熟悉libpng,但当我想从头开始创建图像时,我几乎总是使用PPM或PPM+PGM,从shell脚本、Fortran程序、简单C程序或任何可以编写纯文本文件的程序开始。是的,我也是——它简单、一致且可预测。
gm convert file.ppm file.png