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自动帮你处理。
推荐阅读
- 盐城■盐城:千余件老物件慰市民“乡愁”
- 江苏如皋:冬日龙游湖景如画
- |77岁老人烙画《古韵扬州》铁笔生辉“烙”出“好地方”
- 通城|冷空气来袭,耐寒草花“上岗”扮靓通城
- 辩论赛|唇枪舌战!文明校园辩论赛总决赛举行
- 趣头条|奇瑞瑞虎5x,极具性价比,你喜欢吗
- 东台|东台致力打造串场河生态景观廊道
- 教育|中国移动“和教育”智慧校园研讨会在通召开
- 汽车|传华为智能汽车部件采用三元锂电池
- 趣头条|喜欢你,没道理,吉利博瑞就是我的菜
