`
beike
  • 浏览: 361720 次
社区版块
存档分类
最新评论

Bmp 标准

阅读更多

工具软件:工具软件:Hex   Workshop   或   UltraEdit  
  首先请注意所有的数值在存储上都是按“高位放高位、低位放低位的原则”,如12345678h放在存储器中就是7856   3412)。下图是导出来的开机动画的第一张图加上文件头后的16进制数据,以此为例进行分析。T408中的图像有点怪,图像是在电脑上看是垂直翻转的。 在分析中为了简化叙述,以一个字(两个字节为单位,如424D就是一个字)为序号单位进行,“h”表示是16进制数。  
  424D   4690   0000   0000   0000   4600   0000   2800   0000   8000   0000   9000   0000   0100*1000   0300   0000   0090   0000   A00F   0000   A00F   0000   0000   0000   0000   0000*00F8   0000   E007   0000   1F00   0000   0000   0000*02F1   84F1   04F1   84F1   84F1   06F2   84F1   06F2   04F2   86F2   06F2   86F2   86F2  
  ......  
  BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。  
  一、图像文件头  
  1)1:图像文件头。424Dh=’BM’,表示是Windows支持的BMP格式。  
  2)2-3:整个文件大小。4690   0000,为00009046h=36934。  
  3)4-5:保留,必须设置为0。  
  4)6-7:从文件开始到位图数据之间的偏移量。4600   0000,为00000046h=70,上面的文件头就是35字=70字节。  
  5)8-9:位图图信息头长度。  
  6)10-11:位图宽度,以像素为单位。8000   0000,为00000080h=128。  
  7)12-13:位图高度,以像素为单位。9000   0000,为00000090h=144。  
  8)14:位图的位面数,该值总是1。0100,为0001h=1。  
  二、位图信息头  
  9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。T408支持的是16位格式。1000为0010h=16。  
  10)16-17:压缩说明:有0(不压缩),1(RLE   8,8位RLE压缩),2(RLE   4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字 节表示一个像素,位域分配为r5b6g5。图中0300   0000为00000003h=3。  
  11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于位图宽度×位图高度×每个像素位数。0090   0000为00009000h=80×90×2h=36864。  
  12)20-21:用象素/米表示的水平分辨率。A00F   0000为0000   0FA0h=4000。  
  13)22-23:用象素/米表示的垂直分辨率。A00F   0000为0000   0FA0h=4000。  
  14)24-25:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。  
  15)26-27:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。  
  三、彩色板  
  16)28-35:彩色板规范。对于调色板中的每个表项,用下述方法来描述RGB的值:  
  1字节用于蓝色分量    
  1字节用于绿色分量    
  1字节用于红色分量    
  1字节用于填充符(设置为0)  
  对于24-位真彩色图像就不使用彩色表,因为位图中的RGB值就代表了每个象素的颜色。但是16位r5g6b5位域彩色图像需要彩色表,看前面的图,与上面的解释不太对得上,应以下面的解释为准。  
  图中彩色板为00F8   0000   E007   0000   1F00   0000   0000   0000,其中:  
  00FB   0000为FB00h=1111100000000000(二进制),是红色分量的掩码。  
  E007   0000为   07E0h=0000011111100000(二进制),是绿色分量的掩码。  
  1F00   0000为001Fh=0000000000011111(二进制),是红色分量的掩码。  
  0000   0000总设置为0。  
  将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、 6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储 器(同样要反序),就可以转换为24位标准BMP格式了。  
  四、图像数据阵列

分享到:
评论

相关推荐

    lena.bmp标准测试图像

    做实验经常用到的经典光学图像lena.bmp格式,分辨率512*512,大小为470KB,适用于图像处理,方便实用

    29张标准测试图像,bmp图像

    总的来说,这组BMP标准测试图像为开发者提供了一个理想的平台,用于测试和改进他们的图像处理算法,确保在处理实际世界复杂图像时能达到预期效果。通过分析和比较在这些标准图像上的处理结果,可以不断优化算法,...

    JEPG解码为BMP(默认路径见资源描述)

    3. **创建DIB头**:根据解码后的JPEG图像尺寸和颜色信息,创建一个符合BMP标准的DIB头。这包括BITMAPINFOHEADER或BITMAPFILEHEADER结构,具体取决于BMP版本。 4. **转换像素数据**:JPEG的像素数据通常是YCbCr色彩...

    32位bmp转24位bmp

    5. **写入24位BMP文件**:转换完成后,需要将新数据写入新的BMP文件,遵循24位BMP的文件格式标准,包括重新构建文件头和信息头。 6. **错误处理**:在读写文件和内存操作时,应考虑可能出现的异常情况,如内存不足...

    bmp180_api.gz_BMP180_bmp180_api_bmp180api使用

    5. 如果需要计算高度,利用`bmp180_calculate_altitude()`函数,传入当前气压和海平面标准气压。 在实际应用中,还需要考虑错误处理和中断处理,以确保在通信失败或传感器故障时能适当恢复。此外,为了提高效率,...

    51读气压计_气压计读取BMP085_51单片机读取BMP280_

    6. 计算海拔高度:根据标准大气模型,海拔高度H可以通过气压P与海平面的标准大气压P0的关系来估算:H = (P0 - P) / ρg,其中ρ是空气密度,g是重力加速度。由于空气密度随温度变化,所以需要进行温度补偿。 7. ...

    bmp文件读出为txt文件, txt文件写入为bmp文件

    例如,Python的PIL库可以方便地处理图像数据,而标准库中的open函数可以用来读写文件。对于C++,可以使用fread和fwrite函数来操作文件,OpenCV库也可以提供图像处理的支持。 总结来说,从BMP到TXT再到BMP的转换涉及...

    标准LENA图像

    总结来说,"标准LENA图像"是图像处理和计算机视觉领域的经典测试素材,"lena bmp 标准测试图像.bmp"是这个图像的位图格式版本,便于算法测试,而"使用说明.txt"则提供了具体的操作指南,帮助用户有效地利用这个图像...

    BMP388代码和资料.zip

    使用官方标准库意味着代码遵循了博世提供的驱动程序规范,确保兼容性和稳定性。同时,因为使用了模拟IIC,代码中会有相关的函数实现这部分逻辑。 **BMP388数据手册和官方代码** 数据手册是理解BMP388特性和操作的...

    BMP转换为DICOM程序

    "BMP转换为DICOM程序"是一个关键工具,它允许将普通的BMP图像文件转换为符合DICOM标准的文件。这个过程涉及以下几个重要知识点: 1. **BMP格式**:BMP是一种无损的位图格式,由Microsoft开发,包含像素数据和色彩...

    RGB565直接转BMP

    根据这些信息,你需要创建一个符合BMP文件格式标准的文件头。 3. **调整像素顺序**:由于RGB565是按每个像素16位存储,而BMP文件通常按照每行8位对齐,这可能导致需要填充额外的字节来满足对齐要求。同时,BMP文件...

    BMP图片转RGB数组

    在VC++中,我们可以使用标准C++库或Windows API函数来完成这个任务。以下是使用C++文件流操作的一个简单示例: ```cpp #include #include struct BMPHeader { // 添加BMP文件头结构体,包括BITMAPFILEHEADER和...

    raw转bmp文件raw2bmp

    2. 色彩空间转换:RAW文件的数据需要从相机的色彩空间(如Adobe RGB、sRGB或ProPhoto RGB)转换到标准的RGB色彩空间,以便于显示。 3. 白平衡调整:根据RAW文件中的信息进行白平衡校正,确保图像色彩准确。 4. 像素...

    bmp.rar_bmp图像读取_显示bmp

    - 打开文件:使用标准输入输出库(如C++的fstream)打开BMP文件。 - 读取文件头:提取图像的基本信息,如宽度、高度、位深度等。 - 解析图像数据:根据图像的位深度,转换每个像素的字节序列为RGB值(红绿蓝三...

    BMP280海拔气压传感器STM32代码,支持二次开发

    【标题】"BMP280海拔气压传感器STM32代码,支持二次开发" 提供了一套基于STM32微控制器的BMP280传感器应用方案,它主要用于环境气压和高度测量,同时也为用户提供了进一步定制和扩展功能的基础。 BMP280传感器是...

    bmp格式转换dcm(C语言)

    BMP是一种常见的位图格式,通常用于存储计算机图形和图像,而DCM则是医疗影像领域广泛使用的标准格式,它包含了医学影像数据以及相关的患者信息。 在Ubuntu 8.04操作系统中,利用GCC编译器进行C语言编程,可以实现...

    BMP180,BMP085驱动程序

    1. **初始化**:配置STM32的I2C外设,设置时钟、数据速率(如标准速100kHz或快速速400kHz)、地址等参数,并将传感器置于工作模式。 2. **数据读取**:通过I2C发送命令到传感器的特定寄存器,如控制寄存器(设定...

    c语言显示位图ShowBMP

    标准c显示bmp useage: showbmp jjw.bmp 在DOS命令行下输入:showbmp jjw.bmp就可以显示图形了 注意: 1.图形要是8位或24位的bmp图象,否则不能显示 2.本程序已经编译通过,但是显示图形的时候有点慢,毕竟是边转换边...

    AES加密BMP图片

    AES加密BMP图片是将高级加密标准(AES)应用于位图图像(BMP)的加密过程,以确保图像数据的安全性。AES是一种广泛使用的对称密钥加密算法,以其高效性和安全性著称,最初是在Linux内核中实现的,但其通用性使其能够...

Global site tag (gtag.js) - Google Analytics