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
来源: http://www.bubuko.com/infodetail-3265928.html