0

前段时间我问了一个关于将 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 ...但我没有找到有关如何使用它的文档。而且我真的不想逐像素读取所有数据以恢复蓝色和红色。有没有办法在不逐个像素的情况下完成它?

在此先感谢您的帮助

4

1 回答 1

2

在 24bpp BMP 中,像素以至少字节序存储它们的颜色。蓝色是第一,红色是最后。在 PPM 中,红色在前,蓝色在后。这在很大程度上解释了为什么它在 Windows 上是一种如此晦涩的图像格式。您必须自己交换存储顺序。

于 2012-08-31T10:54:03.847 回答