前段时间我问了一个关于将hwnd保存到ppm文件的问题。感谢stackoverflow用户,我已经解决了我的问题。我的工作正常,但我仍有问题:红色和蓝色是倒置的。
代码和我之前的问题在这里: hwnd to ppm issue
这是位图信息数据:
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = w;
bi.biHeight = -h;
bi.biPlanes = 1;
bi.biBitCount = 24;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
我用Google搜索,似乎问题是BI_RGB,我应该使用BI_BITFIELDS ...但我没有找到有关如何使用它的文档。 而且我真的不想逐个像素地读取所有数据以恢复蓝色和红色。 有没有办法在不逐像素的情况下完成它?
提前感谢您的帮助
答案 0 :(得分:2)
在24bpp BMP中,像素以最少的字节顺序存储它们的颜色。蓝色是第一,红色是最后。在PPM中,红色是第一个,蓝色是最后一个。这在很大程度上解释了为什么它在Windows上是如此模糊的图像格式。您必须自己交换存储订单。