PPM简介
学习图形学时为了直观地观察结果,需要输出图片,而PPM是一种最简单的图片格式,非常适合新手使用。
PPM文件的内容大概是这样的:
第一行固定为P3
,代表写入的是PPM格式的RGB图像,除此之外还有PBM和PGM格式分别对应P1和P2,代表单色图和灰度图。
第二行两个整数代表图片的宽度
和高度
。
第三行代表像素值范围
,通常写为255
,代表每个颜色通道的值在0-255之间。
接下来每行三个整数代表一个像素各个颜色通道的值,总共有宽度*高度
行。
顺序按照从左上角开始,每行从左往右,然后从上往下逐行填充。
用C++输出PPM图片的示例代码
int main() { ofstream OutImage; OutImage.open("Image.ppm"); int nx = 200; int ny = 100; OutImage << "P3\n" << nx << ' ' << ny << "\n255\n"; for(int i = ny-1; i >= 0; i--) { for (int j = 0; j < nx; j++) { float r = (float)j / nx; float g = (float)i / ny; float b = 0.2; int ir = int(255.99 * r); int ig = int(255.99 * g); int ib = int(255.99 * b); OutImage << ir << ' ' << ig << ' ' << ib << '\n'; } } return 0; }
最后要查看PPM格式的图片需要支持该格式的图片查看器,我使用的是XnView。
结果:
PPM格式十分简单,方便新手入门,如果想输出更通用的png格式的话,可以使用milo大神的png函数:https://zhuanlan.zhihu.com/p/26525083