BMP图像编码格式

转自 http://blog.csdn.net/bzhou830/article/details/39084213

BMP文件由文件头位图信息头颜色信息图形数据四部分组成。

1、  文件头

BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息,一共包含14个字节。

例如:下图是个一个位图文件的二进制编码:


1- 2字节:文件类型,必须是BM,十六进制中则是0x4d42;

3- 6字节:位图文件的大小(低位在前),单位为字节;

                 图中表示的就是0x00002182Byte= 8578Byte = 8.376953125KByte

7- 8字节:位图文件保留字1,必须为0;

9-10字节:位图文件保留字2,也必须是0;

11-14字节:位图数据的起始位置,文件头的偏移量,单位为字节。

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. typedef struct tagBITMAPFILEHEADER {  
  2.         WORD    bfType;  
  3.         DWORD   bfSize;  
  4.         WORD    bfReserved1;  
  5.         WORD    bfReserved2;  
  6.         DWORD   bfOffBits;  
  7. } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;  

2、 位图信息头

BMP位图信息头数据用于说明位图的尺寸等信息,占40个字节。


15-18字节:本结构所占用字节数;

19-22字节:位图的宽度(像素单位);

23-26字节:位图的高度(像素单位);

27-28字节:目标设备的级别,必须为1;

29-30字节:每个像素所需的位数;

31-34字节:位图压缩类型,必须是0(不压缩);

35-38字节:位图的大小(其中包含了为了补齐行数是4的倍数而添加的空字节),以字节为单位;

39-42字节:位图水平分辨率,每米像素数;

43-46字节:位图垂直分辨率,每米像素数;

47-50字节:位图实际使用的颜色表中的颜色数;

51-54字节:位图显示过程中重要的颜色数;

依次定义为下:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. typedef struct tagBITMAPINFOHEADER{  
  2.         DWORD      biSize;  
  3.         LONG       biWidth;  
  4.         LONG       biHeight;  
  5.         WORD       biPlanes;  
  6.         WORD       biBitCount;  
  7.         DWORD      biCompression;  
  8.         DWORD      biSizeImage;  
  9.         LONG       biXPelsPerMeter;  
  10.         LONG       biYPelsPerMeter;  
  11.         DWORD      biClrUsed;  
  12.         DWORD      biClrImportant;  
  13. } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;  

3、 颜色信息

颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。

颜色表中RGBQUAD结构数据的个数有biBitCount来确定:

当biBitCount=1,4,8时,分别有2,16,256个表项;

当biBitCount=24时,没有颜色表项。

4、 图形数据

位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:

当biBitCount=1时,8个像素占1个字节;

当biBitCount=4时,2个像素占1个字节;

当biBitCount=8时,1个像素占1个字节;

当biBitCount=24时,1个像素占3个字节,按顺序分别为B,G,R;

Windows规定一个扫描行所占的字节数必须是

4的倍数(即以long为单位),不足的以0填充,

biSizeImage= ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) * bi.biHeight;

### 回答1: 16进制转JPG图片工具可以将十六进制格式的字符串转换为JPG格式的图片。通常在网络传输中,数据的传输方式往往会使用十六进制,在图像传输方面也不例外。因此,有时需要将一个十六进制字符串转化为一张图像,以便更方便地查看和使用。 在使用16进制转JPG图片工具时,需要先将十六进制码复制到软件界面的相应区域中,然后点击转换按钮即可生成对应的JPG图片。随后,可以将生成的JPG图片保存到计算机本地,或者将其直接用于在线显示和分享。 16进制转JPG图片工具涉及的原理与技术较复杂,需要一定的计算机基础知识和编程技能。不过,对于普通用户来说,只需要选用简单易用的工具即可完成转换操作,可以帮助提高工作和生活的效率。 ### 回答2: 16进制是一种计算机中使用的进位制方法,其基数为16。在计算机中,16进制通常用于表示二进制数字,因为16进制兼具二进制表示的紧凑性和容易转化的方便性。 转换16进制数为JPG图片有许多方法和工具可以实现。最简单的方法是通过文本编辑器将16进制数复制到一个新的文本文件中,并将其保存为.jpg文件。这种方法非常简单,适用于JPG文件非常小的情况。 对于大尺寸的JPG图片,通常需要使用一些专业的工具和软件,如PhotoShop、GIMP、Paint.net等,这些工具可以将16进制数转换为JPG格式,并对JPG图片进行美化和编辑。 此外,还有许多在线网站和应用程序也可以将16进制数转换为JPG图片,如在线图片转换器、在线金手指等。 总之,将16进制数转换为JPG图片非常实用,可以帮助用户实现从计算机系统中提取图像和数据的目的。对于实现此目的,有许多方法和工具可以选择,根据具体情况选择最适合的方法和工具非常重要。 ### 回答3: 16进制转JPG图片工具是一种可以将16进制代码转化为JPG图像的工具。它主要适用于需要将16进制代码转换为图片的场景,如图像加密、数据存储和传输等领域。 这个工具可以将16进制代码转换为JPG格式的图像,使得16进制代码得以转化为可视化的图像。用户可以选择自己喜欢的颜色和大小对转换后的图像进行个性化定制。此外,该工具还可以实现多种不同格式之间的转换,如16进制代码到PNG格式、BMP格式等。 使用该工具需要一定的基础知识和技能,比如了解16进制编码的含义及其转换规则、JPG图像格式的特点和基本操作等。如果您不太熟悉这些基础知识,建议您先进行学习和练习,然后再使用这个工具。 总之,16进制转JPG图片工具是一个非常方便实用的工具,它可以帮助人们将16进制代码转化为美观的图像,实现数据的可视化呈现,也为图像加密和数据传输等领域提供了便捷的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值