如何通过UltraEdit解析BMP文件内部结构(BMP位图基础)

yizhihongxing

下面我将详细讲解如何通过UltraEdit解析BMP文件内部结构。

准备工作

  • 下载安装UltraEdit
  • 准备一张BMP格式的图片

解析过程

  1. 打开UltraEdit软件
  2. 打开BMP文件:文件 > 打开
  3. 打开文件后,将光标移至字节流数据处,右键点击选择Hex/ASCII菜单,然后点击设置'#'注释符
  4. 在弹出的对话框中,选择作为注释符,点击确定按钮。
  5. 此时,选中的字节流数据部分的内容将会被注释掉,方便我们查看BMP文件的内部结构。
  6. 通过在字节流数据区上双击,可在十六进制和ASCII码之间进行切换。注意,BMP文件头的字节顺序是小端序(低位字节在前,高位字节在后)。
  7. 接着,我们就可以根据BMP文件头的结构,依次解析出每个字段的含义和取值。
  8. 以Windows位图版本为例,Windows位图文件头的结构如下:
    ```
    [BMP文件头]
    bfType 2 字节类型,必须为“BM”,即0x424D(此处省略了海量注释)
    bfSize 4 文件大小(字节)
    bfReserved1 2 保留,必须为0
    bfReserved2 2 保留,必须为0
    bfOffBits 4 从文件头到实际位图数据的偏移字节数

    [位图信息头]
    biSize 4 位图信息头的大小
    biWidth 4 位图的宽度(像素)
    biHeight 4 位图的高度(像素)
    biPlanes 2 目标设备的级别,固定为1
    biBitCount 2 每个像素所需的位数
    biCompression 4 图像的压缩类型
    biSizeImage 4 图像大小
    biXPelsPerMeter 4 水平分辨率
    biYPelsPerMeter 4 垂直分辨率
    biClrUsed 4 实际使用的颜色表中的颜色数
    biClrImportant 4 对图像显示有重要影响的颜色数
    ```
    - 我们可以在字节流数据区中找到对应的字段,然后解析出其值。

示例说明

以一个30×30像素的24位深彩色BMP图片为例,通过UltraEdit解析其内部结构。解析过程如下:

  1. 打开UltraEdit软件,打开BMP文件。
  2. 将光标移至字节流数据处,右键点击选择Hex/ASCII菜单,然后点击设置'#'注释符
  3. 在弹出的对话框中,选择作为注释符,点击确定按钮。
  4. 此时,选中的字节流数据部分的内容将会被注释掉,方便我们查看BMP文件的内部结构。
  5. 通过在字节流数据区上双击,可在十六进制和ASCII码之间进行切换。
  6. 开始逐步解析BMP文件内部结构,按照顺序解析不同的头部和数据的部分。

  7. BMP文件头
    42 4D 7E 00 00 00 00 00 00 00 36 00 00 00 28 00
    00 00 1E 00 00 00 1E 00 00 00 01 00 18 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00

    • bfType为0x424D,表示这是Windows位图文件(BMP文件)。
    • bfSize为158,表示整个BMP文件的大小为158字节。
    • bfReserved1和bfReserved2均为0,表示保留字段的值。
    • bfOffBits为54,表示从文件头到实际位图数据的偏移字节数为54字节。
  8. 位图信息头
    28 00 00 00 1E 00 00 00 1E 00 00 00 01 00 18 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00

    • biSize为40,表示此信息头的大小为40字节。
    • biWidth为30,表示该位图的宽度(像素)为30像素。
    • biHeight为30,表示该位图的高度(像素)为30像素。
    • biPlanes为1,表示目标设备的级别。
    • biBitCount为24,即每个像素占用的字节数为24位(3字节,分别代表RGB三个颜色通道)。
    • biCompression为0,表示该位图没有经过压缩。
    • biSizeImage为900,表示图像大小为900字节(即30×30×24/8)。
    • biXPelsPerMeter和biYPelsPerMeter均为0,表示分辨率为默认值。
    • biClrUsed和biClrImportant均为0,表示该位图不使用调色板。
  9. 位图像素数据
    ```
    FF FF FF C4 C3 C1 C4 C3 CA

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何通过UltraEdit解析BMP文件内部结构(BMP位图基础) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 经典测试面试题(101道)

    我来给你讲解一下“经典测试面试题(101道)”的攻略。 一、了解考试内容 在准备考试之前,首先需要了解考试的内容,这样才能更有针对性地进行复习准备。你可以去查看考试官方给出的考试大纲和考试说明,了解考试的测试范围和考察重点,同时需要注意一些常见的考试格式,如选择题、填空题、简答题、编程题等类型。这里可以提供一些示例: 1.1 考试大纲示例 考试科目 考试大纲…

    C 2023年5月22日
    00
  • C++实现读写文件的示例代码

    下面是关于C++实现读写文件的示例代码的攻略。 一、前置知识 在开始写C++读写文件的代码之前,你需要有一些基本的前置知识: 文件指针(FILE*):表示文件句柄,用于打开、关闭文件,以及进行读、写、定位等操作。 文件操作模式:用于指定打开文件的模式,例如读取、写入、追加等。 文件读写函数:主要有fscanf、fprintf、fgets、fputs、frea…

    C 2023年5月24日
    00
  • ECMAScript6变量的解构赋值实例详解

    ECMAScript6变量的解构赋值实例详解 什么是解构赋值 解构赋值是ES6中的一个新特性,它允许你从数组或者对象中提取出数据并赋值到新的变量中。 数组解构赋值 let [a, b, c] = [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3 数组解构赋值中,…

    C 2023年5月23日
    00
  • C语言实现航班售票系统 C语言实现航班管理系统

    C语言实现航班售票系统/C语言实现航班管理系统 1. 系统需求分析 从乘客角度: 查询已有航班信息。 按起降时间、出发地、目的地、班次号等筛选符合需求的航班信息。 预定航班票。 取消预定航班票。 查看已预定航班票。 从航空公司角度: 增加、删除、修改航班信息。 航班出发前取消航班。 确认航班售票情况。 2. 功能设计 显示菜单,包括: 登录; 注册; 查询航…

    C 2023年5月30日
    00
  • C 程序 对字符串集排序

    下面是详细讲解“C 程序 对字符串集排序”的完整使用攻略。 概述 在 C 语言中,我们可以使用 qsort() 函数对字符串集进行排序。具体来说,我们需要填写几个参数,包括要排序的字符串数组指针、字符串数组中字符串的个数、每个字符串的长度、和一个比较函数指针。比较函数指针是用来告诉 qsort() 函数如何进行排序的,这个函数会比较两个字符串,然后返回一个负…

    C 2023年5月9日
    00
  • C语言修炼之路灵根孕育源流出 初识C言大道生上篇

    C语言修炼之路灵根孕育源流出 初识C言大道生上篇 灵根孕育源流出 本篇文章首先介绍了C语言的起源和发展,以及C语言与其他计算机语言之间的关系和区别,为后续学习打下了基础。 初识C言大道生 本篇文章主要介绍了C语言的一些基本概念和语法,包括变量、数据类型、运算符、控制语句等重要内容,让读者初步了解C语言编程的基本思想和方法。 针对本篇文章,下面给出两个示例: …

    C 2023年5月23日
    00
  • C++执行shell命令的多种实现方法

    C++可以通过多种方式执行shell命令,以下是其中的一些常见方法。 使用system函数 system函数是最简单和常见的执行shell命令的方法,可以通过将命令字符串作为参数传递给system函数来执行命令。例如,以下代码将显示当前目录中的所有文件列表: #include <cstdlib> int main() { system(&quot…

    C 2023年5月23日
    00
  • Go语言编程入门超级指南

    Go语言编程入门超级指南是一本适合初学者的Go语言入门教材,本书详细讲解了Go语言的语法、常用数据结构以及并发编程等内容。本文将为大家提供完整的入门指南。 目录 安装Go语言环境 编写第一个Go程序 常用数据结构与方法 并发编程 Go语言项目实战 1. 安装Go语言环境 首先需要在官网下载Go语言的安装包,并按照安装向导进行安装。安装过程中可以选择自定义安装…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部