凌阳科技大学计划论坛

首页 » 32位SPCE3200技术讨论区 » SPCE3200新手上路 » bmp,jpeg等图片格式相关
lameck - 2008-4-3 21:56:00
bmp文件格式详谈.pdf

 附件: 您所在的用户组无法下载或查看附件

gif and bmp相关

 附件: 您所在的用户组无法下载或查看附件
woodstar123 - 2008-4-8 13:58:00
:handshake
maomao2126 - 2008-5-22 12:52:00
:D :D
leajian - 2008-5-27 9:14:00
贴一段BMP解码的头文件里的内容吧,这个就是BMP文件的格式:
// constants for BitPerPixel of struct FILE_HEADER
#define BP_SINGLE    1
#define BP_16COLOR    4
#define BP_256COLOR  8
#define BP_16BITCOLOR 16
#define BP_24BITCOLOR 24
#define BP_32BITCOLOR 32

// constants for CompresType of struct FILE_HEADER
#define BI_RGB      0
#define BI_RLE8      1
#define BI_RLE4      2
#define BI_BITFIELDS 3

typedef struct {
    UINT8 B;// : 8;
    UINT8 G;// : 8;
    UINT8 R;// : 8;
    UINT8 Filled;// : 8;
}RGBQUAD;

typedef struct {
    RGBQUAD ColorTable[256];
    UINT32 CTOffset;
    UINT32 CTSize;
}COLORTABLE;

typedef struct {
    UINT16 DUMP;        // offset:-2,保证按4字节对齐
    UINT16 Type;        // offset:0x00 文件标识, 一般是0x4d42, 也就是"BM"
    UINT32 FileSize;    // offset:0x02 整个文件的大小
    UINT32 Reserved;    // offset:0x06 保留 must be 0
    UINT32 Offset;        // offset:0x0a 位图数据的偏移量
}FILE_HEADER;

typedef struct {
    UINT32 HeadSize;    // offset:0x0e 位图信息头的长度, windows系统一般为0x28
    UINT32 Width;        // offset:0x12 位图宽度
    UINT32 Height;        // offset:0x16 位图高度
    UINT16 Planes;        // offset:0x1a 位图的柱面数(该值将总是1)
    UINT16 BitPerPixel;    // offset:0x1c 每个象素的位数(1-单色位图; 4-16色位图; 8-256色位图; 16-16bit高彩色位图; 24-24bit真彩色位图; 32-32bit增强型真彩色位图)
    UINT32 CompresType;    // offset:0x1e 压缩方式(0-不压缩; 1-使用8位RLE压缩; 2-使用4位RLE压缩; 3-位域存放方式)
    UINT32 DataSize;    // offset:0x22 用字节数表示的位图数据大小, 必须为4的倍数
    UINT32 HResolution;    // offset:0x26 用象素/米表示的水平分辨率
    UINT32 VResolution;    // offset:0x2a 用象素/米表示的垂直分辨率
    UINT32 Colors;        // offset:0x2e 位图使用的颜色数. 如8bit/象素表示为100H或者256
    UINT32 ImportColor;    // offset:0x32 指定重要的颜色数. 当该域的值等于颜色数(或者等于0)时,表示所有颜色都一样重要
    COLORTABLE ColorTable;        // 调色板规范
}INFO_HEADER;

typedef struct {
    FILE_HEADER FileHead;// 文件信息头
    INFO_HEADER InfoHead;// 图象信息头
    UINT8 *Data; // 图象数据
} BITMAP_FILE;
leajian - 2008-5-27 9:14:00
在 TFT 驱动里有BMP的解码程序,感兴趣的可以拿去研究哦 :-)
 1 
查看完整版本: bmp,jpeg等图片格式相关