BMP图片格式具体是什么?

BMP图片格式具体是什么?,第1张

BMP图片格式的介绍:

BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。

Windows系统内部各图像绘制 *** 作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。

Windows3.0以后的BMP图象文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。

BMP文件的数据按照从文件头开始的先后顺序分为四个部分

位图文件头(bmp file header):   提供文件的格式、大小等信息。

位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息

调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表

位图数据(bitmap data):图像数据区

bmp是图片文件的后缀名。扩展名为BMP的位图文件是Windows *** 作系统所推荐和支持的图像文件格式。

文件扩展名(filenameextension)也称为文件的后缀名,是 *** 作系统用来标记文件类型的一种机制。通常来说,一个扩展名是跟在主文件名后面的,由一个分隔符分隔。扩展名可以被认为是一个类型的元数据。

DOS作业系统(包括Windows3.x)把文件扩展名限制在3个字符以内。个人电脑(PC)自微软推出Windows95开始,在其他Windows *** 作系统上,无论是16/32比特的Windows95、Windows98、WindowsME还是32位的WindowsNT、Windows2000、WindowsXP、Windows2003和WindowsVista、Windows7的FAT32文件系统中包含有一个界面水平的修正,使得文件扩展名的字数可以达到256个英文字符(长文件名),但是在系统层面,仍然保留3个字母的命名方式,这对很多用户来说都是不可见的。NTFS文件系统则没有这种限制。

BMP 文件是一种常用的图像文件格式,本文的例子程序产生一个简单的 640x480 24 bit 颜色的 BMP 文件。BMP 文件的格式分两部分,第一部分为文件头,具体定义见源程序,第二部分为数据区,紧接着文件头存放。

源程序:

code segment

assume cs:code,ds:code

org 100h

start:

jmp install

BMP 文件头定义

---------------------------------------------------------------

BMP_HEAD DB 'BM' 固定为 'BM'

D_FILE_LENGTH DD 640*480*3+36h 文件总长度,包括文件头

D_RESERVED DD ? reserved

D_OFFSET DD 36h 数据区开始位置

D_BISIZE DD 28h bit map info' head length

D_WIDTH DD 640 图形的宽度(单位象素)

D_HEIGHT DD 480 图形的高度(单位象素)

D_PLANES DW 1 图形的平面数

D_BIT DW 24 颜色位数

D_COMPRESS DD 0 压缩方式(0为不压缩)

D_SIZE DD 640*480*3 数据长度

D_XPPM DD 0c00h pixels per meter (x)

D_YPPM DD 0c00h pixels per meter (y)

D_CLRUSED DD 0 color used

D_CLRIMP DD 0 important color index

BMP_HEAD_END EQU THIS BYTE

----------------------------------------------------------------HANDLE DW ?

FILE_NAME DB 'test.bmp',0

LINE_BUF DB 640*3 dup (0)

D_RED DB 0ffh

D_GREEN DB 0

D_BLUE DB 0install:

mov ah,3ch 建立文件

xor cx,cx

mov dx,offset file_name

int 21h

jnb cre_ok

int 20h

cre_ok:

mov handle,ax

mov ah,40h 写入文件头

mov bx,handle

mov cx,offset bmp_head_end-offset bmp_head

mov dx,offset bmp_head

int 21h

mov cx,480 写入 480 行数据

xor bp,bp

b_lop:

push cx

mov ax,bp

inc bp

cmp ax,160

jb b1

cmp ax,320

jb b2

b3:

sub ax,320

mov si,offset d_blue

mov di,offset d_red

jmp short b4

b2:

sub ax,160

mov si,offset d_green

mov di,offset d_blue

jmp short b4

b1:

mov si,offset d_red

mov di,offset d_green

b4:

mov cx,0ffh

mul cx

mov cx,160 160

div cx

mov byte ptr ds:[si],0ffh

sub byte ptr ds:[si],al

mov byte ptr ds:[di],al

mov cx,640

mov di,offset line_buf

cld

b_lop1:

mov al,d_red

stosb

mov al,d_green

stosb

mov al,d_blue

stosb

loop b_lop1

mov ah,40h

mov bx,handle

mov cx,640*3

mov dx,offset line_buf

int 21h

pop cx

loop b_lop

mov ah,3eh 关闭文件

int 21h

int 20hCODE ENDS

END START


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8132875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存