读取BMP文件中关于位图属性的信息,将一个数值矩阵封装为一个BMP格式的文件
来源:互联网 发布:数据分析统计工具 编辑:程序博客网 时间:2024/06/01 18:32
读取BMP文件中关于位图属性的信息,将一个数值矩阵封装为一个BMP格式的文件。
报告:
i.首先我们理解一下BMP文件的格式或者说这样一个文件中有什么东西。BMP文件的格式是二进制的,也就是说我们可以直接把它们读回内存中。当我们把它读回内存中后就会发现,
它的组成是一个结构体BITMAPFILEHEADER,一个结构体BITMAPINFOHEADER,一个结构体RGBQUAD数组,和线性的图像数据。
以下是从VC6.0中截出来的这些结构体的定义。
了解了位图文件的组成,读取位图信息就非常的容易了。
其实DIB函数库也提供了几个读取位图信息的函数:
为了读取更多的位图信息,我们可以将上述结构体分别读到内存中来,
读取的方式如上,
值得注意的是:1.文件的打开方式是二进制2.由于上述原因,BMP文件可以直接读回内存,成为结构体对象。3.读取图像数据时,数据类型应为unsigned char否则会出错。4.如果想输出bfType即位图的类型‘BM’,它的类型WORD不是一个被支持的字符串类型,所以只能格式化输出,
方法如下:
ii.
完成了读取位图属性信息的工作后,将数值矩阵封装为一个BMP文件的思路也就很清晰了。
只要我们把位图文件的结构体按照二进制输出到文件中即可。
过程:
1.首先我们要获得一个能代表位图的数值矩阵,并使它具有一定的格式,以便处理。
直接从位图文件中读出一个这样的矩阵即可,方法如下:
以上获得了一个逗号分割文件,一会我们就将这个数值矩阵封装为BMP文件。
2.将逗号分割文件表示的数值矩阵读回内存中,并放置在一个二维数组中。读取方法如下:
这就是一个典型的逗号分割文件读取方法。
此处注意:
因为在内存中位图数据是对图像从下到上从左到右扫描获得的,所以我们在位图文件中找到的第一个位图数据是图像的最左下角。为了表示方便我们把它读到了矩阵的最左下角,而不是矩阵的第一个位置。
3.封装文件,定义相关结构体,为结构体赋相应的属性值,将结构体按顺序写到文件中,最后将二维数组按扫描顺序写到文件中即可。
注意1.文件的后缀名要为.BMP 2.文件要以二进制打开 3.结构体的属性如下
4.读出来的图像如下所示,图像失真的原因不明。
- 读取BMP文件中关于位图属性的信息,将一个数值矩阵封装为一个BMP格式的文件
- 遍历文件目录及bmp位图信息头的读取
- 读取bmp图片的文件头,与位图信息头
- BMP格式知识之一:BMP位图文件的存储格式
- BMP位图文件的存储格式
- BMP位图文件的存储格式
- BMP位图文件的存储格式
- BMP位图文件的存储格式
- 关于BMP文件的格式
- 关于BMP文件的读取
- 将位图句柄保存为BMP文件
- MFC中怎样读取一个JPG文件或BMP位图文件
- BMP文件的格式
- BMP文件的格式
- 256色的BMP文件分为 BMP文件头,BMP信息头,彩色表和位图信息矩阵4部分。【个人收藏】
- BMP文件的读取
- 一个简单的读取bmp文件的程序(c)
- bmp位图的格式
- 定时器/计数器应用提高 ----1
- Linux GCC常用命令
- openstack dhcp调试
- IOS交互式动画
- 优秀品质对于富军等营销团队的重要性
- 读取BMP文件中关于位图属性的信息,将一个数值矩阵封装为一个BMP格式的文件
- TOJ 4603 Interesting Calculator -- SPFA
- Android设备内存和SD卡操作工具类
- 小试ImageMagik——开发篇
- hadoop常见错误问题及解决方法(2)
- Hadoop集群(第6期)_WordCount运行详解
- hadoop常见错误问题及解决方法(3)
- 大数的阶乘
- Buffer类的简介(位于java.nio.*)