如何将bmp文件转化成16进制文件

上传人:mg****85 文档编号:37194404 上传时间:2018-04-08 格式:DOC 页数:5 大小:27.50KB
返回 下载 相关 举报
如何将bmp文件转化成16进制文件_第1页
第1页 / 共5页
如何将bmp文件转化成16进制文件_第2页
第2页 / 共5页
如何将bmp文件转化成16进制文件_第3页
第3页 / 共5页
如何将bmp文件转化成16进制文件_第4页
第4页 / 共5页
如何将bmp文件转化成16进制文件_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《如何将bmp文件转化成16进制文件》由会员分享,可在线阅读,更多相关《如何将bmp文件转化成16进制文件(5页珍藏版)》请在金锄头文库上搜索。

1、如何将如何将 BMPBMP 文件转化成文件转化成 1616 进制文件进制文件bmp 实质是为 16 进制文件 利用一段代码可将其转化为 16 进制的一维数组形式 bmp 文件的结构如下:typedef struct/BMP 文件的文件头char bfType2;long bfSize;int bfReserved1;int bfReserved2;long bfOffBits;BMPHEAD;typedef struct/点位图信息long biSize;long biWidth;long biHeight;int biPlanes;int biBitCount;long biCompress

2、;long biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;long biClrUsed;long biClrImportant;BMPINFO;typedef struct/颜色表 unsigned char blue;unsigned char green;unsigned char red;unsigned char reaserved;RGB;bmp 文件保存时,先存上面的三个结构体的数据,之后是图像数据.具体信息可查相关书籍详细解释:BMP 文件是一种像素文件,它保存了一幅图象中所有的像素。这种文件格式可以保存单色位图、16

3、 色或 256 色索引模式像素图、24 位真彩色图象,每种模式种单一像素的大小分别为 1/8 字节,1/2 字节,1 字节和 3 字节。目前最常见的是 256 色 BMP 和 24 位色 BMP。这种文件格式还定义了像素保存的几种方法,包括不压缩、RLE 压缩等。常见的 BMP 文件大多是不压缩的。Windows 所使用的 BMP 文件,在开始处有一个文件头,大小为 54 字节。保存了包括文件格式标识、颜色数、图象大小、压缩方式等信息,因为我们仅讨论 24 位色不压缩的 BMP,所以文件头中的信息基本不需要注意,只有“大小”这一项对我们比较有用。图象的宽度和高度都是一个 32 位整数,在文件中

4、的地址分别为 0x0012和 0x0016。54 个字节以后,如果是 16 色或 256 色 BMP,则还有一个颜色表,但 24 位色 BMP 没有这个,我们这里不考虑。接下来就是实际的像素数据了。24 位色的 BMP 文件中,每三个字节表示一个像素的颜色。注意,通常使用 RGB 来表示颜色,但 BMP 文件则采用BGR,就是说,顺序被反过来了。以下为网络转载: 1. BMP 文件组成 BMP 文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 2. BMP 文件头 BMP 文件头数据结构含有 BMP 文件的类型、文件大小和位图起始位置等信息 其结构定义如下: typedef struc

5、t tagBITMAPFILEHEADERWORDbfType; / 位图文件的类型,必须为 BMDWORD bfSize; / 位图文件的大小,以字节为单位WORDbfReserved1; / 位图文件保留字,必须为 0WORDbfReserved2; / 位图文件保留字,必须为 0DWORD bfOffBits; / 位图数据的起始位置,以相对于位图/ 文件头的偏移量表示,以字节为单位 BITMAPFILEHEADER;3. 位图信息头 BMP 位图信息头数据用于说明位图的尺寸等信息。typedef struct tagBITMAPINFOHEADERDWORD biSize; / 本结构

6、所占用字节数LONGbiWidth; / 位图的宽度,以像素为单位LONGbiHeight; / 位图的高度,以像素为单位WORD biPlanes; / 目标设备的级别,必须为 1WORD biBitCount/ 每个像素所需的位数,必须是 1(双色),/ 4(16 色),8(256 色)或 24(真彩色)之一DWORD biCompression; / 位图压缩类型,必须是 0(不压缩),/ 1(BI_RLE8 压缩类型)或 2(BI_RLE4 压缩类型)之一DWORD biSizeImage; / 位图的大小,以字节为单位LONGbiXPelsPerMeter; / 位图水平分辨率,每米

7、像素数LONGbiYPelsPerMeter; / 位图垂直分辨率,每米像素数DWORD biClrUsed;/ 位图实际使用的颜色表中的颜色数DWORD biClrImportant;/ 位图显示过程中重要的颜色数 BITMAPINFOHEADER;4. 颜色表 颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个 RGBQUAD 类型的结构,定义一种颜色。RGBQUAD 结构的定义如下: typedef struct tagRGBQUAD BYTErgbBlue;/ 蓝色的亮度(值范围为 0-255)BYTErgbGreen; / 绿色的亮度(值范围为 0-255)BYTErgbR

8、ed; / 红色的亮度(值范围为 0-255)BYTErgbReserved;/ 保留,必须为 0 RGBQUAD;颜色表中 RGBQUAD 结构数据的个数有 biBitCount 来确定:当 biBitCount=1,4,8 时,分别有 2,16,256 个表项;当 biBitCount=24 时,没有颜色表项。位图信息头和颜色表组成位图信息,BITMAPINFO 结构定义如下:typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; / 位图信息头RGBQUAD bmiColors1; / 颜色表 BITMAPINFO;5. 位图数据

9、 位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数: 当 biBitCount=1 时,8 个像素占 1 个字节;当 biBitCount=4 时,2 个像素占 1 个字节;当 biBitCount=8 时,1 个像素占 1 个字节;当 biBitCount=24 时,1 个像素占 3 个字节;Windows 规定一个扫描行所占的字节数必须是4 的倍数(即以 long 为单位),不足的以 0 填充,一个扫描行所占的字节数计算方法:DataSizePerLine= (biWidth* biBitCount+31)/8; / 一个扫描行所占的字节数DataSizePerLine= DataSizePerLine/4*4; / 字节数必须是 4的倍数位图数据的大小(不压缩情况下):DataSize= DataSizePerLine* biHeight;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号