打印
[开发工具]

图片.bmp数据结构

[复制链接]
292|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-8-30 08:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BMP(Bitmap)文件格式是一种简单的位图图像格式,其数据结构分为几个主要部分:文件头、信息头、调色板(可选)和像素数据。下面是各部分的详细说明。

1、文件头(File Header)

bfType (2 bytes): 文件类型,通常为'BM'(0x42 0x4D)。
bfSize (4 bytes): 文件大小(以字节为单位)。
bfReserved1 (2 bytes): 保留字,通常为0。
bfReserved2 (2 bytes): 保留字,通常为0。
bfOffBits (4 bytes): 从文件头到像素数据的偏移量。
2、信息头(DIB Header)

biSize (4 bytes): 信息头的大小(通常为40)。
biWidth (4 bytes): 图像宽度(以像素为单位)。
biHeight (4 bytes): 图像高度(以像素为单位)。
biPlanes (2 bytes): 色平面数,通常为1。
biBitCount (2 bytes): 每个像素的位数(如24位、32位)。
biCompression (4 bytes): 压缩类型(0为不压缩)。
biSizeImage (4 bytes): 图像数据的大小(可以为0)。
biXPelsPerMeter (4 bytes): 水平分辨率(像素每米)。
biYPelsPerMeter (4 bytes): 垂直分辨率(像素每米)。
biClrUsed (4 bytes): 使用的颜色数(0表示使用所有颜色)。
biClrImportant (4 bytes): 重要的颜色数(0表示所有)。
3、调色板(Color Palette)
对于某些格式(如1位或4位色),可能会包含调色板。调色板由颜色索引组成,使用RGB格式(每个颜色占用4个字节,包含蓝、绿、红、保留字节)。

4、像素数据(Pixel Data)
像素数据从bfOffBits指定的位置开始。像素的排列顺序通常是自下而上,从左到右,具体存储格式取决于biBitCount:

24位BMP:每个像素使用3个字节,分别表示蓝色、绿色和红色(BGR格式)。
32位BMP:每个像素使用4个字节(蓝、绿、红、透明度)。

使用特权

评论回复
沙发
OKAKAKO|  楼主 | 2024-8-30 08:22 | 只看该作者
在C语言中,BMP文件格式有一个特定的数据结构。BMP文件分为文件头、信息头和像素数据。下面是BMP文件的基本数据结构:

BMP 文件数据结构

#include <stdint.h>

// BMP 文件头
typedef struct {
    uint16_t bfType;      // 文件类型,通常为 'BM'
    uint32_t bfSize;      // 文件大小
    uint16_t bfReserved1; // 保留字段
    uint16_t bfReserved2; // 保留字段
    uint32_t bfOffBits;   // 像素数据的偏移量
} BMPFileHeader;
// BMP 信息头

typedef struct {
    uint32_t biSize;          // 信息头大小
    int32_t biWidth;          // 图像宽度
    int32_t biHeight;         // 图像高度
    uint16_t biPlanes;        // 色平面数,通常为1
    uint16_t biBitCount;      // 每个像素的比特数(如24位)
    uint32_t biCompression;   // 压缩类型
    uint32_t biSizeImage;     // 图像大小
    int32_t biXPelsPerMeter;   // 水平分辨率
    int32_t biYPelsPerMeter;   // 垂直分辨率
    uint32_t biClrUsed;       // 使用的颜色数
    uint32_t biClrImportant;   // 重要的颜色数
} BMPInfoHeader;
// 像素数据

typedef struct {
    uint8_t blue;    // 蓝色分量
    uint8_t green;   // 绿色分量
    uint8_t red;     // 红色分量
} RGBPix

使用特权

评论回复
板凳
sfd123| | 2024-8-30 13:14 | 只看该作者
这个玩意 我以前 还真的  搞过,做了个产品,为了做说明书,需要指导在液晶上的操作,拍照的方式太丑了,就采用读取液晶内存数据,然后存成图片的方式,非常棒!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

209

主题

1405

帖子

3

粉丝