C#GDI绘图,图片以24位BMP格式保存问题

本来bmp格式就是很复杂的,通常来讲,你应该加载bmp,然后创造一个一样大的32/24位的DIB,然后复制过去,然后直接改DIB的内存,改完了复制回来,再保存。
■网友
以前也研究过BMP文件格式,那个BMP的文件头BMPInfoHeader确实提供了很多信息,biBitCount一般为24的时候,程序OK,但是对于其他的版本文件,似乎还会有点问题,并不总是能完美地处理所有的BMP文件。如果用的颜色不是2^24,还得处理颜色表。另外还有PadByte将字节对齐,行程长度编码等问题。反正我的程序总不能完美地处理所有版本的BMP文件,最后放弃了……
■网友
因为老师不让用第三方库,我之前写过读写BMP代码。简单来说,处理BMP文件要先解析BMP头,里面的参数太多,各有各的要求,例如每行大小必须被某数整除,不然补0;如果color位是多少,colortable必须重定义啊什么的…细节不一定准。但大致这些都要考虑。BMP头wiki上就有完整的需求。但是,解析BMP费神费力,按轮子哥说的,直接修改DIB然后保存,剩下的GDI自动帮你处理。


    推荐阅读