`
老顽童
  • 浏览: 48156 次
  • 性别: Icon_minigender_1
  • 来自: 默认
社区版块
存档分类
最新评论

BMP文件编码格式和算法

阅读更多
最近在做软件时遇到BMP文件格式和算法问题,在网上找了好多资料,但都不能用,我研究了一个早上,终于把这里面的二进制格式搞清楚了,希望对 大家有用。
42 4D           2 bytes 文件类型BM(ASCII编码)
C6 03 00 00       1 dword 文件大小(包含头信息)966
00 00 00 00       1 dword 保留
36 00 00 00       1 dword 从文件开始到位图数据开始之间的偏移量36(H) = 54(D) 54字节
28 00 00 00       1 dword 位图信息头的长度28(H)=40(D)。
65 00 00 00       1 dword 位图的宽度,以象素为单位bmp的长101
03 00 00 00       1 dword 位图的高度,以象素为单位bmp的宽3
 
01 00            1 word 位图的位面数(该值将总是1 Pages =1)
18 00            1 word 每个象素的位数
00 00 00 00       1 dword 压缩说明,0 - 不压缩 (使用BI_RGB表示)
90 03 00 00       1 dword 用字节数表示的位图数据的大小(图片数据912)。966=912+54
C4 0E 00 00      1 dword 用象素/米表示的水平分辨率,水平3780
C4 0E 00 00      1 dword 用象素/米表示的垂直分辨率,垂直3780
 
从这里开始为bmp数据,可以根据偏移量得到36(H) = 54(D)        
====每三个数表示一个像素颜色,如(#d87c66)表示一个像素点,后面的0为补数,长度等于303+1====
=====图片数据开始 第一行======
d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 0
=========第二行=========
d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 0
==========第三行========
d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 d8 7c 66 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 0
 
通用算法
1、以二进制流打开文件
2、按照BMP文件信息和BMP图片信息开始读取,这里的长度是固定的
3、根据BMP 文件信息中的数据偏移量得到,数据段的开始位置
4、根据算法反解析。
http://www.loopbus.cn/new_display.asp?newid=336
Google的二进制编码格式:Protocol Buffers
http://www.infoq.com/cn/news/2008/07/google-protocol-buffers
分享到:
评论

相关推荐

    BMP图像转换为JPG算法

    BMP文件头提供了文件的基本信息,如文件大小、图像宽度和高度等。DIB头包含像素布局和颜色深度等信息。 2. **解码BMP像素数据**:BMP文件通常以RGB(红绿蓝)三原色顺序存储像素数据,有时也会有额外的位用于alpha...

    C实现将BMP文件转base64编码

    5. 应用Base64编码算法,将字节数据转化为Base64字符串。 6. 将Base64字符串写入新的文本文件中,注意换行和末尾填充。 7. 最后,释放内存和关闭文件。 提供的压缩包可能包含一个示例程序,用于演示如何实现这个...

    bmp文件解码的研究与实现

    3. **压缩算法**:BMP文件支持简单的压缩算法,如RLE(Run-Length Encoding)编码、掩码等,这些压缩算法的使用增加了解码的复杂性。 4. **扩展特性**:随着技术的发展,BMP文件格式出现了更多的扩展特性,如增加...

    raw格式转换为bmp格式(包括代码,lena.raw和lena.bmp)

    3. **创建BMP文件头**:BMP文件的开头包含一个文件头和一个位图信息头,定义了图像的尺寸、颜色深度、压缩方式等信息。 4. **组织像素数据**:RAW数据可能不是RGB顺序,需要按照BMP格式的要求重新排列像素。BMP通常...

    利用RLE算法将一个黑白两色的bmp文件转换成rle格式

    总之,通过RLE算法将黑白BMP文件转换为RLE格式,可以有效地减少文件大小,这对于存储和传输资源有限的场景非常有用。这个过程涉及到图像处理、文件格式解析、压缩算法的实现等多个IT领域的基础知识,对于深入理解...

    BMP文件格式分析.pdf

    此外,通过分析BMP文件,还可以进一步了解其他图像格式的编码方式,为图像处理技术的学习和研究打下坚实的基础。在实际应用中,尽管BMP文件因未压缩而体积较大,但在对图像质量要求较高的场合,如打印或专业设计领域...

    对一幅BMP格式的灰度图像进行二元霍夫曼编码和译码。计算编码效率。

    对一幅BMP格式的灰度图像进行二元霍夫曼编码和译码。计算编码效率。 二、 算法描述 在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号...

    BMP.rar_bmp压缩_bmp压缩算法_softwfl_图片压缩

    然而,可以通过外部算法实现对BMP文件的压缩,例如通过改变颜色模式、使用DCT变换(如JPEG中使用的)或者使用熵编码等技术。这些方法可能会导致图像质量的损失,尤其是对于有大量细节或者颜色渐变的图像。 在实际...

    bmp_image_compression_bmp图像压缩算法_

    4. 创建新的BMP文件头,根据压缩算法的特性更新相关参数,如位深度、图像大小等。 5. 将压缩后的数据写入新的BMP文件。 通过理解BMP图像的内部结构和掌握合适的压缩技术,我们可以有效地减小文件大小,同时保持图像...

    m.rar_BMP JPEG_bmp压缩_jpeg压缩算法_图片压缩编码

    本文将深入探讨标题“m.rar_BMP JPEG_bmp压缩_jpeg压缩算法_图片压缩编码”所涉及的知识点,主要围绕BMP和JPEG两种图片格式以及它们的压缩技术。 BMP(Bitmap)是一种未压缩的位图格式,它保存了图像的每一个像素...

    BMP格式文件转换为JPG格式文件 BMP转JPG格式

    1. **读取BMP文件**:首先,程序需要打开BMP文件,读取其头信息,包括宽度、高度、位深度等,这些信息在BMP文件的头部存储。 2. **解码BMP数据**:BMP数据通常是按行存储的,且可能包含填充字节以保持行长度为4字节...

    信息加密——基于BMP位图的信息隐藏算法 源代码

    1. **读取BMP文件**:程序需要能够解析BMP文件,提取位图信息头和像素数据。 2. **信息编码**:秘密信息可能需要先进行编码,如ASCII到二进制,以便适应像素的二进制表示。 3. **位插入**:在每个像素的LSB中插入...

    BMP文件格式

    了解BMP文件格式和RLE压缩技术,有助于我们更好地处理和理解图像文件,尤其是在需要减小文件大小或者处理低彩色位图像时。同时,这也为开发者提供了一个基础,以便他们在编程中实现对BMP文件的读取、写入和压缩功能...

    C++ BMP与JPG格式的图片互相转换源代码不使用其它库

    接下来,我们需要读取BMP文件的头部信息,解析出图像宽度、高度和位深度,然后逐行读取像素数据。对于BMP到JPG的转换,需要将像素数据进行JPEG压缩算法处理,这包括离散余弦变换(DCT)、量化、熵编码等步骤。而JPG...

    vb -将bmp文件压缩为jpg格式

    BMP文件通常占用大量磁盘空间,而JPG格式通过有损压缩方法降低了文件大小,适合网络传输和存储。本教程将详细介绍两种在VB中实现这一转换的方法:一种基于GDI+(Graphics Device Interface Plus),另一种则使用专门...

    读取RAW图像并转换为BMP文件

    在图像处理领域,RAW图像和BMP文件是两种常见的格式,它们各有特点,适用于不同的应用场景。本教程将深入探讨如何使用C++编程语言从RAW格式转换为BMP格式,这对于理解图像处理的基本原理以及开发相关应用非常有帮助...

    将文件隐藏成bmp文件

    "将文件隐藏成bmp文件"是这种技术的一种实现方式,它利用了位图(BMP)图像文件格式的特性来嵌入其他类型的文件,如EXE可执行文件。下面将详细介绍这个过程及其相关知识点。 BMP文件是一种未压缩的图像文件格式,它...

    bmp格式转yuv格式

    2. **解码BMP像素**:BMP文件中的像素数据通常是RGB格式,即红色、绿色和蓝色的组合。我们需要将这些RGB值解码为YUV值。这个过程涉及到颜色空间转换公式,例如: ``` Y = 0.299R + 0.587G + 0.114B U = -0.147R -...

    BMP文件转换为JPG文件的源代码

    转换的核心在于理解这两种图像格式的结构,并且应用适当的编码和解码算法。 1. **BMP文件格式**: BMP文件的结构包含文件头、信息头和像素数据。文件头定义了文件的基本信息,信息头提供了图像的具体尺寸、颜色...

    图像格式转换算法原理

    - **编码算法**:在完成必要的颜色空间转换后,选择适当的编码方法将像素数据转化为目标格式的文件。 - **优化技术**:为了提高转换效率和图像质量,可以引入一些优化技术,如使用更快的压缩算法、减少冗余数据等。 ...

Global site tag (gtag.js) - Google Analytics