会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
游戏开发 > 程序设计 > 图形处理
常用图像格式
发表日期:2007-01-16 17:18:31作者: 出处:  

BMP文件

BMP文件结构分为三个部分:文件头(54字节)、调色板数据和图像数据。

24位色图像中没有调色板数据部分。

文件头结构:

struct {
WORD  Type;              //BMP文件标志,为“BM”
DWORD Size;              //文件大小
WORD  Reserved1;         //保留
WORD  Reserved2;         //保留
DWORD Offset;            //图像数据对文件头的偏移
DWORD SizeStruct;        //BMP文件头中一结构大小,为40
DWORD Width;             //图像宽度
DWORD Height;            //图像高度
WORD  Planes;            //设备的平面数,为1
WORD  BitCount;          //像素位数
DWORD Compression;       //压缩类型,24位无法压缩
DWORD SizeImage;         //图像数据大小
DWORD XPeIsPerMeter;     //分辨率
DWORD YPeIsPerMeter;     //分辨率
DWORD ClrUsed;           //使用了多少种颜色(调色板中)
DWORD ClrImportant;      //重要颜色的变址数,若都是重要颜色取0值
}BMPHEAD;

调色板结构:

struct {
BYTE Blue;
BYTE Green;
BYTE Red;
BYTE Reserved;           //保留,为0
}RGBQUAD;

注意:

一、WINDOWS BMP文件规定每行像素字节数必须是4的倍数,否则在像素数据后加若干字节(0),凑足4的倍数。
二、24位文件的图像数据中也是按BLUE、GREEN、RED的顺序来排的。
三、BMP文件的原点在左下角。
四、关于RLE压缩法在PCX中再详谈。

PCX文件

PCX文件也大致分为三个部分,分别是128字节的文件头部分、数据部分和调色板部分,和BMP文件很像,但所有的PCX都经过了RLE压缩,而且都是RLE8(按字节来压缩)。

文件头:

struct{
BYTE Type;             //标志,为0X0A
BYTE Version;          //版本号,最好为5
BYTE Encoding;         //压缩方式,为1
BYTE BitsPerPixel;
int  MinX,MinY;        //X、Y坐标的MIN值
int  MaxX,MaxY;        //X、Y坐标的MAX值
int  Hres,Vres;        //分辨率
BYTE Palette[48];      //16色用调色板
BYTE Reserved;         //保留
BYTE ColorPlanes;
WORD BitsPerLine;      //一行数据所占用的字节数
WORD PaletteType;      //调色板类型,1代表灰度,2代表彩色
BYTE Filler[58];       //保留
}PCXHEAD;

调色板:

若文件的倒数第769字节为0X0C,则代表文件是256色模式,而此后的768字节都是调色板数据。PCX文件的调色板数据是按RED、GREEN、BLUE的顺序来储存的。

RLE8压缩:

只要发现一串连续相同数据(以字节为单位),就用两个字节来替代它们;其中,第一个字节是这一串数据的长度,第二个字节代表这串数据的值;这就是RLE8的算法。

PCX在处理第一个字节时,还必须将它的高两位置1,用其余的六位来表示相同数据个数,因此其最大值只能为63。如果连续相同的数据大于63时,就必须用多字节来处理。而在图像数据大于等于0XC0时,即使是不连续出现的数据,也必须要分两个字节来表示该图像数据。

例:

压缩前——11个 0X15、0X5A、0X67、81个 0X35、0XC7、5个 0XD8

压缩后——0XCB、0X15、0X5A、0X67、0XFF、0X35、0XD2、0X35、0XC1、0XC7、0XC5、0XD8

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00245