关于bitmap文件生成

昨天一下午都在折腾这个bitmap文件,卡在了一个死角上。

想做的事情是用很多栅格点的数据生成灰度图像。

先把这些数据标准化到0-255之间;然后生成file文件,填写bitmap文件头,填写标准化后的栅格数据。

需要注意的有两点:

1,数据类型的转换,我是从float转为unsigned char,然后转为byte,因为很少接触byte类型,查了以后才知道byte和unsigned char其实是一样的。

2,bitmap文件头的填写。

可参考任一一个讲解bitmap文件结构的文档。http://lhbyron.bokee.com/652956.html

我做完这两个步骤,却发现生成图像失败。当时考虑可能的原因有:1,数据类型转换中出了问题;2,bitmap文件格式的问题。

测试了一下可以排除第一个可能。然后看第二种情况,我用ultraedit软件直接把生成的错误的bitmap文件打开,当然都是16进制的数据。然后我把这些16进制的数据跟bitmap文件头的格式一位一位的比对,最后发现错误的原因在于Bitmap Data Size设置错了,bitmap文件要求这个值必须是4的整数倍。改成4的整数倍以后,问题就解决了。看来位图像素的总数必须是4的整数倍。

总结了一下,还是自己太粗心,没有仔细地看bitmap文件结构。另外,UltraEdit这个软件还蛮好用的。

posted @ 2012-03-13 22:10  最好的时光  阅读(348)  评论(0编辑  收藏  举报