C++ 输出PPM格式图片文件

99封情书 提交于 2019-12-03 00:25:12

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!