请教关于bmp文件的显示

Areslp 2003-12-29 02:24:29
256色的bmp文件的颜色信息1像素是4个字节吧,我想用ah=0ch,int 10h来画图,但是写像素时的颜色信息是存在al里的,只有一个字节,应该怎么办呢?
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2003-12-30
  • 打赏
  • 举报
回复
在http://asm.yeah.net有关于BMP的资料.
WYC2300 2003-12-29
  • 打赏
  • 举报
回复
我的邮箱是:wyc2300@163.com
我的QQ:254734866
给我以后多多请教你的机会哦
Areslp 2003-12-29
  • 打赏
  • 举报
回复
谢谢lp_w3@hotmail.com
fancy0001 2003-12-29
  • 打赏
  • 举报
回复
上文是copy于yz文章《BMP文件格式分析》中,你留下email,我可以给你发原文,写的较细
fancy0001 2003-12-29
  • 打赏
  • 举报
回复
位图文件头包含有关于文件类型、文件大小、存放位置等信息,在Windows 3.0以上版本的位图文件中用BITMAPFILEHEADER结构来定义:

typedef struct tagBITMAPFILEHEADER { /* bmfh */

UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;

} BITMAPFILEHEADER;

其中:


bfType
说明文件的类型.(该值必需是0x4D42,也就是字符'BM'。我们不需要判断OS/2的位图标识,这么做现在来看似乎已经没有什么意义了,而且如果要支持OS/2的位图,程序将变得很繁琐。所以,在此只建议你检察'BM'标识)

bfSize
说明文件的大小,用字节为单位

bfReserved1
保留,必须设置为0

bfReserved2
保留,必须设置为0

bfOffBits
说明从文件头开始到实际的图象数据之间的字节的偏移量。这个参数是非常有用的,因为位图信息头和调色板的长度会根据不同情况而变化,所以你可以用这个偏移值迅速的从文件中读取到位数据。


2. 位图信息头

位图信息用BITMAPINFO结构来定义,它由位图信息头(bitmap-information header)和彩色表(color table)组成,前者用BITMAPINFOHEADER结构定义,后者用RGBQUAD结构定义。BITMAPINFO结构具有如下形式:

typedef struct tagBITMAPINFO { /* bmi */

BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];

} BITMAPINFO;

其中:


bmiHeader
说明BITMAPINFOHEADER结构,其中包含了有关位图的尺寸及位格式等信息

bmiColors
说明彩色表RGBQUAD结构的阵列,其中包含索引图像的真实RGB值。


BITMAPINFOHEADER结构包含有位图文件的大小、压缩类型和颜色格式,其结构定义为:

typedef struct tagBITMAPINFOHEADER { /* bmih */

DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;

} BITMAPINFOHEADER;

其中:


biSize
说明BITMAPINFOHEADER结构所需要的字数。注:这个值并不一定是BITMAPINFOHEADER结构的尺寸,它也可能是sizeof(BITMAPV4HEADER)的值,或是sizeof(BITMAPV5HEADER)的值。这要根据该位图文件的格式版本来决定,不过,就现在的情况来看,绝大多数的BMP图像都是BITMAPINFOHEADER结构的(可能是后两者太新的缘故吧:-)。

biWidth
说明图象的宽度,以象素为单位

biHeight
说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,高度值是一个正数。(注:当高度值是一个负数时(正向图像),图像将不能被压缩(也就是说biCompression成员将不能是BI_RLE8或BI_RLE4)。

biPlanes
为目标设备说明位面数,其值将总是被设为1

biBitCount
说明比特数/象素,其值为1、4、8、16、24、或32

biCompression
说明图象数据压缩的类型。其值可以是下述值之一:
BI_RGB:没有压缩;

BI_RLE8:每个象素8比特的RLE压缩编码,压缩格式由2字节组成(重复象素计数和颜色索引);

BI_RLE4:每个象素4比特的RLE压缩编码,压缩格式由2字节组成

BI_BITFIELDS:每个象素的比特由指定的掩码决定。


biSizeImage
说明图象的大小,以字节为单位。当用BI_RGB格式时,可设置为0
biXPelsPerMeter
说明水平分辨率,用象素/米表示
biYPelsPerMeter
说明垂直分辨率,用象素/米表示
biClrUsed
说明位图实际使用的彩色表中的颜色索引数(设为0的话,则说明使用所有调色板项)
biClrImportant
说明对图象显示有重要影响的颜色索引的数目,如果是0,表示都重要。

Areslp 2003-12-29
  • 打赏
  • 举报
回复
up一下,强人们能来说说bmp文件的结构吗?比如256色的从哪个字节开始是颜色信息,这个象素是从图片的哪个位置开始的,还有就是里面的rgb分量在汇编显示时应该怎么用?希望有人来解答一下,谢谢!

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧