PNG图像能够支持多种图像属性,例如多种颜色,透明度,伽玛校正,无损压缩等。PNG图像被广泛使用,并且是多种类型图像的首选。
为了处理PNG文件,我们将使用PNGwriter平台无关的包装开源C++库,用于libpng (PNG参考库),这是功能最丰富的库之一,用C编写。PNGwriter库可在Linux,Unix,macOS上运行和Windows。其受支持的功能包括打开现有的PNG图像,在RGB,HSV和CMYK颜色空间中绘制和读取像素,基本形状,缩放,双线性插值,完整的TrueType抗锯齿和旋转文本支持以及Bezier曲线。它需要FreeType2库来支持文本。
有关更多文档和库,请访问SourceForge,PNGwriter-github。
如何生成图像:
像素是共同生成图像的最小单位。每个像素都有一些代表颜色的数值。步骤如下:
- 我们选择所需的图像高度和宽度。
- 根据需要,我们逐像素迭代并应用颜色。
- 然后以适当的扩展名和属性存储此像素集合,从而生成图像。
通过应用颜色生成图像:
下面是用C++生成RGBA门户图形图像的程序:
// C++ program to generate PNG images
#include
#include
#include
// Function to generate PNG image
void generate_PNG(int const width,
int const height,
std::string filepath)
{
// Print the filepath
cout << endl
<< "Filepath: "
<< filepath.c_str();
// Generate the flag
pngwriter flag{ width, height, 0,
filepath.data() };
// Calculate sizes
int const size = width / 3;
// Fill the squares
flag.filledsquare(0, 0, size,
2 * size, 0,
0, 65535);
flag.filledsquare(size, 0, 2 * size,
2 * size, 0,
65535, 65535);
flag.filledsquare(2 * size, 0,
3 * size, 2 * size,
65535, 0, 65535);
// Close the flag
flag.close();
}
// Driver code
int main()
{
// Given width and height
int width = 300, height = 200;
// Filepath
std::string filepath;
// Function call to generate PNG image
generate_PNG(width, height, filepath);
return 0;
}
输出:
解释:
上面的程序采用文件名的宽度,高度和文件地址。 pngwriter类表示PNG图像。 PNG图像的构造函数使我们可以设置像素的宽度和高度,背景色以及应保存图像的文件的路径。如上面的代码所示,我们只是并排排列了三种纯色,为此,我们使用filledsquare()函数,该函数从开始位置到结束位置都获取了xy坐标值和一个颜色值(R,G,B ) 。当映像保存在内存中时,然后调用close()方法将其保存到磁盘文件中。
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。