前段时间我问了一个有关将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;


我用谷歌搜索,看来问题出在BI_RGB,我应该使用BI_BITFIELDS ...但是我没有找到有关如何使用它的文档。
而且我真的不想逐像素读取所有数据以还原蓝色和红色。
有什么方法可以不按像素完成它吗?

在此先感谢您的帮助

最佳答案

在24bpp BMP中,像素以最低字节顺序存储其颜色。蓝色为第一,红色为最后。在PPM中,红色排在第一位,蓝色排在最后。这在很大程度上解释了为什么Windows上的图像格式如此晦涩。您必须自己调换存储订单。

关于c - 位图倒置颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12212951/

10-11 23:22
查看更多