位图文件内部初探

合集下载

位图文件(BMP)

位图文件(BMP)

位图⽂件(BMP)位图⽂件简介BMP(Bitmap-File)格式是最常⽤的图像⽂件存取格式之⼀,是微软为其Windows环境设置的标准图像格式,BMP位图⽂件默认的⽂件扩展名是“.BMP”或者“.bmp”,有时它也会以“.DIB”或者“RLE”为扩展名。

⽤BMP格式存放的图像⼏乎可以被所有的图像显⽰软件读取。

BMP图形⽂件是Windows采⽤的图像⽂件格式,在Windows环境下运⾏的所有图像软件都⽀持BMP图像⽂件格式。

Windows系统内部个图像绘制操作都是以BMP为基础的。

Windows3.0以前的BMP⽂件格式与显⽰设备有关,因此把这种BMP图像⽂件格式称为设备相关位图(Device Dependent Bitmap,DDB)⽂件格式。

Windows3.0以后的BMP⽂件都与显⽰设备⽆关,因此把这种BMP⽂件格式称为设备⽆关位图(Device Independent Bitmap,DIB)格式。

BMP⽂件格式摘要每个BMP⽂件只能存放⼀张图像。

图像数据是否采⽤压缩⽅式存放,取决于⽂件的⼤⼩与格式,即压缩处理是BMP图像⽂件的⼀个选项,⽤户可以根据需要进⾏选择。

其中,⾮压缩格式是BMP图像⽂件所采⽤的⼀种通⽤格式,它按照⼀定的顺序忠实的记录图像中每⼀个像素的颜⾊值。

如果⽤户确定将BMP⽂件格式压缩处理,则Windows设计了⼀种压缩⽅式:如果位图为16⾊模式,则采⽤RLE4压缩⽅式,如果图像为256⾊模式,则采⽤RLE8压缩⽅式。

BMP图像数据⽂件格式可以存储为单⾊,16⾊,256⾊和真彩⾊四种图像数据,其数据的排列顺序与⼀般⽂件不同,它以图像的左下⾓作为起点存储图像,⽽不是以图像的坐上⾓为起点。

⽽且BMP图像⽂件格式中还存在另外⼀个与众不同的特点,即其调⾊板数据所采⽤的数据结构中,红,绿,蓝三种基⾊数据的排列顺序也恰好与其他图像⽂件格式相反。

总之,BMP图像⽂件格式拥有许多适合于Windows环境的新特⾊,⽽且随着Windows版本的不断更新,微软也在不断的改进BMP图像⽂件格式。

24位位图解析

24位位图解析

我所要介绍的是24位真彩色位图文件的结构。

一个24位真彩色位图文件包括以下三个部分:位图文件头、位图信息头和颜色数据域,这都是我自己起的名字,不知是否与经典有出入,大家应该能够意会。

首先说说位图文件头。

就目前来看我所见到过的位图文件头都位于位图文件的最前部,长都是14个字节,例如有这样一个位图文件(用16位编辑器打开浏览时的效果):那么在第0行从左向右的前14个字节(红色部分)属于位图文件头,各个字节的意义是这样的:42 4D:看作ASCII码,对应的字母为‘BM’,即表示该文件是位图文件;86 00 00 00:四个字节用于表示改为图文件的大小尺寸,要注意的是它们是按低位到高位排列的,那么可以看出整个位图文件的尺寸是0x00000086字节,即134字节。

不难得知,这四个字节最大可以表示4,294,967,296,即可以表示4GB的位图大小;00 00 00 00:查资料知道,这4个字节是保留位,用于存储文件大小的数据。

而我没有找到超过4G的位图,因此不知道这四个自己究竟如何使用。

不过可以推测可能是用跟前面4字节共64 bit来表示文件的大小。

FAT32文件系统下不支持超过4GB的文件,NTFS系统支持;36 00 00 00:也是按从低位到高位排列的,用于表示改位图颜色数据域相对文件开始处的偏移量,可以看到这个位图的颜色数据域是从0x00000036字节处开始的(这里有点想不通,既然前面要用8个字节表示文件大小,为什么这里的偏移量只有4字节?)。

以上就是位图文件头的情况,接下来是位图信息头,仍旧观察前面的位图,从第一行E序字节的28开始(蓝色部分)共40字节,各个字节的含义是:28 00 00 00:表示信息头的长度,0x00000028=40,即位图信息头占40个字节;05 00 00 00:表示位图宽度,单位为像素。

即位图的宽度为5个像素;05 00 00 00:表示位图高度,单位为像素。

bmp文件结构的探索 (1)

bmp文件结构的探索 (1)

BMP文件结构的探索BMP文件结构的探索WhatIf 2004-9-10一、文件格式Bmp文件是非常常用的位图文件,无论是游戏还是其他都被广泛使用。

针对bmp文件的处理也有一堆现成的api进行调用,然而文件内部究竟怎样,如何自己来解析这样的文件呢?为了消除无聊,我用了几天时间来研究了一下,同时作为学习笔记,进行记录。

首先,整个bmp文件的内容可以分为3到4块。

之所以分为3到4块而不是固定的值,是因为,对于bmp来说可能存在调色板或者一些掩码。

具体稍候讨论。

第一块是bmp的文件头用于描述整个bmp文件的情况。

结构如下:typedef struct BITMAPFILEHEADER {WORD bfType; //两个字节DWORD bfSize; //四个字节WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;} BITMAPFILEHEADER, *PBITMAPFILEHEADER;这些信息相当有用,如果你想直接来解析bmp文件。

第一个bfType用于表示文件类型,如果它是bmp文件,那么它这个位置的值一定是”BM”也就是0x4D42。

第二个bfSize表示整个文件的字节数。

第三第四个则保留,目前无意义,最后一个相当重要,表示,位图的数据信息离文件头的偏移量,以字节为单位。

第二块是位图信息头,即BITMAPINFOHEADER,用于描述整个位图文件的情况。

以下挑重要的数据进行解释typedef struct BITMAPINFOHEADER{DWORD biSize; //表示本结构的大小LONG biWidth; //位图的宽度LONG biHeight; //位图的高度WORD biPlanes; //永远为1 ,由于没有用过所以没做研究附msdn解释//Specifies the number of planes for the target device. This value must be set to 1.WORD biBitCount;//位图的位数分为1 4 8 16 24 32 本文没对1 4 进行研究DWORD biCompression; //本以为压缩类型,但是却另外有作用,稍候解释DWORD biSizeImage; //表示位图数据区域的大小以字节为单位LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;} BITMAPINFOHEADER, *PBITMAPINFOHEADER;第三块就是调色板信息或者掩码部分,如果是8位位图则存放调色板;16 与32位位图则存放RGB颜色的掩码,这些掩码以DWORD 大小来存放。

位图结构解析

位图结构解析

位图结构解析位图结构解析2011-03-19 00:55 99人阅读评论(0) 收藏举报BMP是一种与硬件设备无关的图像文件格式,使用非常广。

它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。

BMP文件的图像深度可选lbit、4bit、8bit及24bit。

BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。

组成典型的BMP图像文件由四部分组成:1:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;2:位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。

类型位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。

DDB位图在早期的Windows系统(Windows3.0以前)中是很普遍的,事实上它也是唯一的。

然而,随着显示器制造技术的进步,以及显示设备的多样化,DDB位图的一些固有的问题开始浮现出来了。

比如,它不能够存储(或者说获取)创建这张图片的原始设备的分辨率,这样,应用程序就不能快速的判断客户机的显示设备是否适合显示这张图片。

为了解决这一难题,微软创建了DIB位图格式。

设备无关位图(Device-IndependentBitmap)DIB位图包含下列的颜色和尺寸信息:*原始设备(即创建图片的设备)的颜色格式。

*原始设备的分辨率。

*原始设备的调色板*一个位数组,由红、绿、蓝(RGB)三个值代表一个像素。

*一个数组压缩标志,用于表明数据的压缩方案(如果需要的话)。

BMP位图文件格式分析

BMP位图文件格式分析

使用画图工具(ms+R调出运行框,输入mspaint即可)分别存储2个文件1.bmp(400*300px),2.bmp(200*150px)白画布。

使用Beyond Compare比较下2个文件数据,注意使用Hex16进制方式。

前2个字节42 4D对应字符BM,是文件类型,这里表示ms的bmp文件类型紧着的4个字节是文件字节数,F6 D8 01 00==》1.bmp应为存储方式是高位字在高地址的方式存储,所以实际是0001D8F6==>转成10进制数值是121078字节=》除以1024就是118K,自己核对下文件属性看看文件大小是不是118k;而2.bmp文件的是66 79 00 00对应00007966=>31078字节=》30.3k随后的4个字节全为00,系统保留。

再后面的4个字节代表的是实际的图像数据开始的位置(偏移量)这里都是36 04 00 00也就是00000436H,在Beyond Compare里Ctrl+G,选择Hex,16进制方式,输入0436转到该位置发现文件数据全是FF也就是白色:然后在看下windows定义的bmp文件头结构体定义就更清晰了:typedef struct tagBITMAPFILEHEADER{UINT16bfType;/*bmp文件类型-占2字节*/DWORD bfSize;/*bmp文件大小-占4字节*/UINT16bfReserved1;/*保留-占2字节*/UINT16bfReserved2;/*保留-占2字节*/DWORD bfOffBits; /*位图数据偏移-占4字节*/}BITMAPFILEHEADER;共14个字节。

文件头后面是文件信息头部,主要是位图文件的详细信息,windows定义的文件信息头的结构体如下:typedef struct tagBITMAPINFOHEADER{DWORD biSize;/*文件信息头占的字节大小-该字段占4字节*/LONG biWidth;/*宽度4字节*/LONG biHeight;/*高度4字节*/WORD biPlanes;/*颜色平面数2字节,总是1(文章1.bmp,2.bmp里可以看到01 00这2个字节)*/WORD biBitCount;/*每个图像像素所占比特数,占2字节,我们这里是8bit,256种颜色,呵呵*/ DWORD biCompression;/*图像数据压缩类型4字节*/DWORD biSizeImage;/*图像大小4字节*/LONG biXPelsPerMeter;/*水平分辨率4字节*/LONG biYPelsPerMeter;/*垂直分辨率4字节*/DWORD biClrUsed;/*所使用颜色表索引数4字节*/DWORD biClrImportant; /*对图像重要影响的索引数4字节占据*/}BITMAPINFOHEADER;统计下:4+4+4+2+2+4+4+4+4+4+4=40共40个字节,验证。

BMP位图浅析

BMP位图浅析

什么是位图计算机能以位图和矢量图格式显示图像。

位图(Bitmap)图像又称点阵图或光栅图,它使用我们称为像素(象素,Pixel)的一格一格的小点来描述图像。

计算机屏幕其实就是一张包含大量像素点的网格。

当我们把位图放大时,每一个像素小点看上去就像是一个个马赛克色块。

矢量图(Vector)使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。

位图和矢量图最简单的区别就是:矢量图可以无限放大,而且不会失真;而位图则不能。

像Photoshop(PS)这样主要用于处理位图的软件,我们称之为图像处理软件;专门处理矢量图的软件,我们称之为图形设计软件,例如Adobe Illustrator,CorelDRAW,Flash MX等。

BMP位图文件常见的图像文件格式有:BMP、JPG(JPE,JPEG)、GIF等。

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

Windows 3.0以后的BMP文件都是指设备无关位图(DIB,device-independent bitmap)。

BMP位图文件默认的文件扩展名是.BMP,有时它也会以.DIB或.RLE作扩展名。

创建BMP文件打开Photoshop,新建一个尺寸为2*3像素的文件。

放大图片到最大(1600%),然后用铅笔工具对每个像素都点一个不同颜色的点,如下图所示。

储存这个文件为BMP格式,文件名为“MyBmp.bmp”,在BMP选项中选择Windows,24位。

BMP文件结构BMP文件由4部分组成:1. 位图文件头(bitmap-file header)2. 位图信息头(bitmap-information header)3. 颜色表(color table)4. 颜色点阵数据(bits data)24位真彩色位图没有颜色表,所以只有1、2、4这三部分。

计算机文件格式大全

计算机文件格式大全
3K
Microsoft公司
Windows31剪贴板文件格式
CRD
Cardfile File Format
Microsoft公司
Windows31卡片文件格式
FIND
Windows 95 Find File Format
Edward Blake
Windows95查找文件格式
GRP
Group File Format
Microsoft库的字典所用的哈希算法
MAP
Borland .MAP File Format
3K
Brad Kimmel
Borland公司的.MAP文件格式
OBJ
objlib.rtf
111K
DOS环境的EXE/COM/SYS/OBJ/LIB文件信息(RTF文档)
ssobj.zip
54K
Microsoft公司
366K
Aldus公司
.TIF文件6.0格式英文说明书(Acrobat文档)
LZW
LZW compression
7K
Bob Montgomery
一个.GIF文件的常用压缩算法
YUV
YUV4:1:1
4K
Angus Dorbie
YUV4:1:1文件格式
WMF
.WMF Metafile Format
14K
LZW and GIF explained-- Steve Blackstock
18K
Steve Blackstock
解释LZW和GIF
gif89a.doc
84K
CompuServe公司
GIF89图象文件英文说明文档(写字板文档)
ICO
Ico.zip

位图文件(BMP)格式分析以及程序实现

位图文件(BMP)格式分析以及程序实现

inf.read((char*)&header, sizeof(header));if(header.bfType != 0x4D42)return false;这个很简单,没有什么好说的。

2、加载位图信息头//Load the image information headerBITMAPINFOHEADER infoheader;memset(&infoheader, 0, sizeof(infoheader));inf.read((char*)&infoheader, sizeof(infoheader));m_iImageWidth = infoheader.biWidth;m_iImageHeight = infoheader.biHeight;m_iBitsPerPixel = infoheader.biBitCount;这里我们得到了3各重要的图形属性:宽,高,以及每个像素颜色所占用的位数。

3、行对齐由于Windows在进行行扫描的时候最小的单位为4个字节,所以当图片宽X 每个像素的字节数!= 4的整数倍时要在每行的后面补上缺少的字节,以0填充(一般来说当图像宽度为2的幂时不需要对齐)。

位图文件里的数据在写入的时候已经进行了行对齐,也就是说加载的时候不需要再做行对齐。

但是这样一来图片数据的长度就不是:宽X 高X 每个像素的字节数了,我们需要通过下面的方法计算正确的数据长度://Calculate the image data sizeint iLineByteCnt = (((m_iImageWidth*m_iBitsPerPixel) + 31) >> 5) << 2;m_iImageDataSize = iLineByteCnt * m_iImageHeight;4、加载图片数据对于24位和32位的位图文件,位图数据的偏移量为sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER),也就是说现在我们可以直接读取图像数据了。

位图文件内部初探

位图文件内部初探

位图文件内部初探最常用的几种图象文件格式怎样存储图象自从我在十四年前买回第一台pc以后,我就一直对计算机用1和0组成的数据流来存储那些复杂的信息很感兴趣。

最初引起我注意的是当时曾很流行的印在杂志上的basic程序清单,它们带有很多数据段,你可将它们键入并运行,以建立其他的程序。

从这里我明白了任何程序无论它多么复杂,也只不过是一系列的针对计算机微处理器的指令而已。

接着,我对ascii码有了兴趣,然后是字处理文件格式,再后来吗,您就看到了图象。

直至今天仍让我着迷的一种技术是位图文件存储。

一个位图存储了计算机上能够再现一幅图象所需的信息。

我们经常在显示器上看到图象,例如一幅美丽的日落,然而在计算机眼里它只是一堆0和1的组合。

归根结底,也就是位图文件里的这些位和字节来告诉计算机这幅图象中每个象素该是什么颜色,然后计算机把位图中的颜色转化成与它的显示卡兼容的格式,最后输出到显示器上。

这个过程中有趣的是计算机怎样解释位图中的数据,位图文件有多种格式,每种格式都有自己的方法对象素数据编码并给出此种格式所要求的一些其他信息,之所以windows95能够读取.bmp文件而不能读.gif文件,就是因为他的设计人员使paint程序能够对以.bmp格式存储的图象数据进行解码,而不是.gif。

到这里。

您一定很想知道一个位图文件里究竟是什么,一种格式同另一种又有什么不同?那么就让我们来简单地看看在pc机上常用的六种位图文件格式。

当然还有其他的文件格式,例如对于矢量图形,就是存储一些再现图象的指令而不是每个象素的颜色数据,但是在这里讨论的这六种位图文件格式才是您平时工作最可能使用的。

bmp文件bmp(bitmap的缩写)文件格式是windows本身的位图文件格式,所谓本身是指windows 内部存储位图即采用这种格式。

一个.bmp格式的文件通常有.bmp的扩展名,但有一些是以.rle为扩展名的,rle的意思是行程长度编码(runlengthencoding)。

BMP位图文件存储初探

BMP位图文件存储初探

BMP位图文件存储初探赵柳青(重庆市綦江南州中学校,重庆401420)摘要:关于位图文件存储大小的计算,普遍采用估算法,估算带来的一个问题是随着位图的增大,误差也就越来越大,以至于超出了预期准备的存储空间。

从提出问题、分析问题、解决问题等方式推导出精确计算位图文件大小的公式,以帮助读者来解决在实际应用位图存储时应该注意的问题。

关键词:位图;编码;存储空间;Windows7系统在计算机领域,图片是指静止的画面,它包含图形和图像两种。

其中,图像是利用数码相机、扫描仪等设备获取的实际景物的一个映象,最小的元素是像素。

相对图形,图像的色彩更加丰富,画面也更加复杂,与实际景物接近,真实感强,故而图像的文件容量更大。

由于图像是由像素构成,因此图像放大之后,会出现失真的情况[1」。

位图图像(Bitmap)简写为BMP,文件名后缀为. bmp,它是按照顺序存储每个像素点颜色的方式来获得的图片文件。

位图图像在计算机中的使用非常广泛叫1提出问题重庆市高中信息技术学科使用新教材为广东教育出版社出版的信息技术必修1《数据与计算》第一章第二节“图像编码”(第12页)中,提到:一般情况下,位图文件所占的空间可按以下公式计算:文件的大小=文件头+信息头+颜色表项+图像分辨率x图像量化位数衣8揖3铱...........①在公式①中,计算了文件头、信息头、颜色表项等附加于位图文件一些信息,由此可以看出作者是想通过这样的计算来精确得出位图文件存储时的大小,即位图文件所占的最小存储空间大小,但事实是,这样计算的结果与Windows系统中位图文件属性所示的大小有差距,而且有时会随着位图尺寸的增加差值会越来越大。

为了科学地了解位图文件的存储,特地先做了一番验证。

2验证问题为了严谨地进行验证,从像素大小、颜色、量化位数等几个方面,用mspaint软件绘制了大量的BMP位图文件,将这些文件属性里的大小和实际计算大小进行比较、分析,形成了下列的表格。

位图格式文档

位图格式文档

位图格式引言在计算机图形学中,位图(Bitmap)是一种用于存储和表示图像的文件格式。

位图通过将图像分解为像素阵列来呈现图像。

每个像素都包含一个固定数量的位,在位图中,每个像素都对应一个特定的颜色值。

位图格式广泛应用于图形编辑、图像处理、计算机游戏等领域。

本文将介绍常见的位图格式以及它们的特征和应用场景。

常见的位图格式BMP(Bitmap)BMP是一种最基本的位图格式,它是在Windows操作系统中非常常见的图像文件格式。

BMP文件保存了图像的每个像素的颜色信息,以及图像的宽度、高度等元数据。

BMP格式的图像不经过压缩,因此文件大小相对较大,但保留了图像的高质量。

BMP格式适用于存储需要精确颜色和细节的图像。

JPEG(Joint Photographic Experts Group)JPEG是一种广泛应用于数码照片和网络图像的格式。

它采用了有损压缩技术,可以极大地减小文件大小。

JPEG格式适用于需要在存储和传输中保持较高图像质量同时又能降低文件大小的情况。

然而,JPEG格式会引入压缩损失,因此在多次编辑和保存后图像质量会逐渐降低。

PNG(Portable Network Graphics)PNG是一种无损压缩的位图格式,它是一种替代GIF格式的图像格式。

PNG格式支持透明度和多种颜色空间,图像质量较好,通常用于存储图标、图形和网页图像。

与JPEG相比,PNG格式在文件大小上优势较小,但能够保持图像的高质量。

GIF(Graphics Interchange Format)GIF是一种使用LZW压缩算法的图像格式,它可以动画地显示多个帧。

GIF格式在存储图像时仅支持256种颜色,适用于图标、简单动画和低色彩图片。

由于GIF格式使用有损压缩,因此不适合存储需要保持高质量的图像。

TIFF(Tagged Image File Format)TIFF是一种多页面的位图格式,它支持单色、灰度、索引和全彩色图像。

走进Photoshop CS6(位图)

走进Photoshop CS6(位图)
5
计算机辅助平面设计
图1-6 “排列”命令 图1-5 “文件”菜单
6
计算机辅助平面设计
通常为了作图的方便,习惯上将所有文件以层叠的形式排列在Photoshop 的桌面中,这样多个 窗口的切换既可以使用任务栏,也可使用快捷键Ctrl+Tab 来实现。若使用快捷键进行窗口的切换, 可按快捷键Ctrl+Tab 或Ctrl+F6 切换到下一个图像窗口,按快捷键Ctrl+Shift+F6 则可以切换到上一 个图像窗口。
16
值得注意的是,图像的显示比例是指图像的每一个像素与屏幕上一个光点的比例关系,而不是与图像 实际尺寸的比例。改变图像的显示比例,并不会改变图像的分辨率和图像尺寸的大小。
放大图像除了使用放大镜工具外,还可使用快捷键Ctrl+Space+ 单击;若使用快捷键Alt+Space+ 单 击,则可实现缩小图像显示比例。
2012 年4 月24 日,Adobe 发布了Photoshop CS6 的正式版, 在Photoshop CS6 中整合了其Adobe 专有的 Mercury 图像引擎,通过显卡核心GPU 提供了强悍 的图片编辑能力。Content-AwarePatch 帮助用户更加轻松方便地选取区域,方便用 户抠图等操作。Blur Gallery 可以允许用户在图片和文件内容上进行渲染模糊特效。 Intuitive Video Creation 提供了一种全新的视频操作体验。
12
计算机辅助平面设计
图1-11 “参考线、网格和切片”1选3项卡
计算机辅助平面设计
4. 出血设置
出血的设定是基于印刷的要求,一般在印刷的版上印刷不会那么精准,由于每次印刷都是大量的 令数与台数,而在裁的时候如果没有出血线,那么印出来的成品可能不会满版。

汇编语言显示bmp图像文件-实验报告-附源码

汇编语言显示bmp图像文件-实验报告-附源码

1.问题描述用汇编语言编写程序,该程序能打开并显示一个.bmp位图图像文件。

原本设想该程序在命令提示符下输入文件路径后直接打开文件,但是在用DosBox 测试时发现不能寻找系统路径,后来将程序改成直接打开当前文件夹下的某个文件,不再输入文件路径。

这个程序对图片文件格式有一定的要求,首先显示模式为320*200的256色模式,故位图属性应该是256色位图,即位深度为8。

2.位图相关知识BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。

由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。

Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。

BMP文件的数据按照从文件头开始的先后顺序分为四个部分:bmp文件头(bmp file header):提供文件的格式、大小等信息;位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息;调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表;位图数据(bitmap data):用来保存图像数据;色彩深度又叫色彩位数,即位图中要用多少个二进制位来表示每个点的颜色,是分辨率的一个重要指标。

常用有1位(单色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增强色),24位和32位(真彩色)等。

其中24位和32位位图中没有调色板。

在这个实验中,因为程序显示模式为256色,于是我采用8位色彩深度的位图图片。

因此,我用windows的画图工具制作了一个320*200大小的256色位图图片。

如图所示:为了便于了解位图文件的组成结构,先用UltraEdit软件将上图打开,图片数据如下图所示:位图各部分组成结构如下表所示:3.数据结构在程序中,需要用到几个由数组组成的缓冲区。

实验一 位图文件的读取与显示

实验一  位图文件的读取与显示

实验一位图文件的读取与显示【开发语言及实现平台或实验环境】(1)开发语言:C++(2)实现平台:Microsoft Visual Studio 6.0【实验目的】(1)掌握位图的文件结构(2)掌握VC++6.0环境下读取位图方式(3)能够对位图进行显示【实验要求】(1)在VC++6.0环境下编程实现对位图的读取和显示操作(2)能够对位图的结构进行分析说明(3)熟悉位图读取过程中BITMAP结构体的使用【实验原理】在计算机位图文件由三部分组成,分别是:文件头、位图信息和位图像素数据。

1.位图文件头位图文件头主要用于识别位图文件。

以下是位图文件头结构的定义:typedef struct tagBITMAPFILEHEADER {WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;} BITMAPFILEHEADER;其中的bfType值应该是“BM”(0x4d42),标志该文件是位图文件。

bfSize的值是位图文件的大小。

2. 位图信息结构位图信息结构中所记录的值用于分配内存,设置调色板信息,读取像素值等。

以下是位图信息结构的定义:typedef struct tagBITMAPINFO {BITMAPINFOHEADER bmiHeader; //信息头RGBQUAD bmiColors[1]; //颜色表} BITMAPINFO;可见位图信息也是由两部分组成的:位图信息头+ 颜色表2.1 位图信息头位图信息头包含了单个像素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位平面数、图像的压缩格式。

以下是位图信息头结构的定义:typedef struct tagBITMAPINFOHEADER{DWORD biSize; //结构BITMAPINFOHEADER的字节数,即//sizeof(BITMAPINFOHEADER)*LONG biWidth; //以像素为单位的图像宽度*LONG biHeight; //以像素为单位的图像长度WORD biPlanes; //目标设备的位平面数WORD biBitCount //每个像素的位数*(1)DWORD biCompression; //图像的压缩格式(这个值几乎总是为0)DWORD biSizeImage; //以字节为单位的图像数据的大小(对//BI_RGB压缩方式而言)LONG biXPelsPerMeter; //水平方向上的每米的像素个数LONG biYPelsPerMeter; //垂直方向上的每米的像素个数DWORD biClrUsed; //调色板中实际使用的颜色数(2)DWORD biClrImportant; //现实位图时必须的颜色数(3)} BITMAPINFOHEADER;说明:*是需要加以注意的部分,因为它们是我们在进行位图操作时经常参考的变量(1)对于每个像素的字节数,分别有一下意义:0,用在JPEG格式中1,单色图,调色板中含有两种颜色,也就是我们通常说的黑白图片4,16色图8,256色图,通常说的灰度图16,64K图,一般没有调色板,图像数据中每两个字节表示一个像素,5个或6个位表示一个RGB分量24,16M真彩色图,一般没有调色板,图像数据中每3个字节表示一个像素,每个字节表示一个RGB分量32,4G真彩色,一般没有调色板,每4个字节表示一个像素,相对24位真彩图而言,加入了一个透明度,即RGBA模式(2)这个值通常为0,表示使用biBitCount确定的全部颜色,例外是使用的颜色树木小于制定的颜色深度的颜色数目的最大值。

如何通过UltraEdit解析BMP文件内部结构(BMP位图基础)

如何通过UltraEdit解析BMP文件内部结构(BMP位图基础)

如何通过UltraEdit解析BMP⽂件内部结构(BMP位图基础)⽬录初见位图位图⽂件的基本结构1.⽂件头信息块2.图像描述信息块3.颜⾊表4.图像数据区具体例⼦初见位图我们先打开画图随便画⼀幅图并采⽤24位bmp图像格式保存,就得到了⼀张24位真彩⾊的位图BMP位图⼀般由4部分组成:⽂件头信息块、图像描述信息块、颜⾊表(在真彩⾊模式⽆颜⾊表)和图像数据区组成,以BMP 为扩展名保存。

打开Windows的画图程序,在保存图像时,可以看到三个选项:2⾊位图(⿊⽩)、16⾊位图、256⾊位图和24位位图。

这是最普通的⽣成位图的⼯具,在这⾥讲解的BMP位图形式,主要就是指⽤画图⽣成的位图. ⼀般的bmp图像都是24位,也就是真彩。

每8位为⼀字节,24位也就是使⽤三字节来存储每⼀个像素的信息,三个字节对应存放r,g,b三原⾊的数据每个字节的存贮范围都是0-255。

那么以此类推,32位图即每像素存储r,g,b,a(Alpha通道,存储透明度)四种数据。

8位图就是只有灰度这⼀种信息,还有⼆值图,它只有两种颜⾊,⿊或者⽩。

接下来逐个分析BMP位图的各个组成部分位图⽂件的基本结构1.⽂件头信息块⽂件信息头(14字节)存储⽂件类型,⽂件⼤⼩等信息// ⽂件信息头结构体typedef struct tagBITMAPFILEHEADER{unsigned short bfType;// 19778,必须是BM字符串,对应的⼗六进制为0x4d42,⼗进制为19778,否则不是bmp格式⽂件unsigned int bfSize; // ⽂件⼤⼩以字节为单位(2-5字节)unsigned short bfReserved1; // 保留,必须设置为0 (6-7字节)unsigned short bfReserved2; // 保留,必须设置为0 (8-9字节)unsigned int bfOffBits; // 从⽂件头到像素数据的偏移 (10-13字节)} BITMAPFILEHEADER;2.图像描述信息块图⽚信息头(40字节)存储着图像的尺⼨,颜⾊索引,位平⾯数等信息//图像信息头结构体typedef struct tagBITMAPINFOHEADER{unsigned int biSize; // 此结构体的⼤⼩ (14-17字节)long biWidth; // 图像的宽 (18-21字节)long biHeight; // 图像的⾼ (22-25字节)unsigned short biPlanes;// 表⽰bmp图⽚的平⾯属,显然显⽰器只有⼀个平⾯,所以恒等于1 (26-27字节)unsigned short biBitCount; // ⼀像素所占的位数,⼀般为24 (28-29字节)unsigned int biCompression; // 说明图象数据压缩的类型,0为不压缩。

实验一 位图文件的读取与显示

实验一 位图文件的读取与显示

实验一位图文件的读取与显示一、实验背景1 位图文件格式说明位图文件格式由四部分组成,如图1所示,分别是位图文件头、位图信息头、调色板以及位图像素数据,其中调色板信息为可选信息,只有当每个像素的比特数小于或等于8(BITMAPINFOHEADER.biBitCount<=8)时才存在,即为一个颜色查找表。

需要注意的是,位图文件存储时为了提高内存访问的速度,每一行的字节数必须是4的倍数,即:如果一幅图像的宽度为253,每个像素用8bit表示,因此,该图像实际每行所占的存储空间数为253Byte,但为了与4对齐,存储时所用的存储空间为256Byte。

具体而言,假设图像的宽度为w,每个像素用n比特表示,则图像每行像素所占的字节数为:(w * n + 31)/32 * 4图1 位图文件格式说明2 位图文件读取位图文件的读取包括两步:(1)根据第1节中的位图文件格式说明,对位图文件进行解析;(2)根据读取的内容创建可供显示的位图句柄。

(1)位图文件解析//open fileFILE *fp = NULL;fopen_s(&fp, strPath, _T("rb"));if (fp == NULL){CString str = _T("File not exist: " )+ strPath;AfxMessageBox(str);return NULL;}//bitmap file headerBITMAPFILEHEADER bmFileHeader;fread(&bmFileHeader, sizeof(BITMAPFILEHEADER), 1, fp);if (bmFileHeader.bfType != 0x4d42){AfxMessageBox(_T("file type is not bitmap"));return NULL;}//bitmap info headerBITMAPINFO bmInfo;BITMAPINFOHEADER &bmInfoHeader = bmInfo.bmiHeader;fread(&bmInfoHeader, sizeof(BITMAPINFOHEADER), 1, fp);if (bmInfoHeader.biSize != sizeof(BITMAPINFOHEADER)){AfxMessageBox(_T("size of bitmap info header is inconsistent"));return NULL;}//whether is compressedif (bmInfoHeader.biCompression != BI_RGB){AfxMessageBox(_T("File is compressed"));return NULL;}int nPalettes = bmInfoHeader.biClrUsed;if (nPalettes == 0 && bmInfoHeader.biBitCount <= 8)nPalettes = 1 << bmInfoHeader.biBitCount;if (bmFileHeader.bfOffBits != sizeof(BITMAPFILEHEADER) +sizeof(BITMAPINFOHEADER) + nPalettes * sizeof(RGBQUAD)){AfxMessageBox(_T("off bits is inconsistent"));return NULL;}//Palette//RGBQUAD *pPalette = NULL;byte *pBmInfo = NULL;if (nPalettes > 0){pBmInfo = new byte[sizeof(BITMAPINFOHEADER) + nPalettes *sizeof(RGBQUAD)];memcpy(pBmInfo, &bmInfoHeader, sizeof(BITMAPINFOHEADER));byte *pPalette = pBmInfo + sizeof(BITMAPINFOHEADER);fread(pPalette, sizeof(RGBQUAD), nPalettes, fp);}//line widthint nLineByte = (bmInfoHeader.biWidth * bmInfoHeader.biBitCount + 31) / 32 * 4;//不直接使用bmInfoHeader.biSizeImage,因为图像不压缩时该字段可以为零int nImageBytes = nLineByte * bmInfoHeader.biHeight;//image databyte *pContents = new byte[nImageBytes];fread(pContents, nImageBytes, 1, fp);(2)将读取的内容转换为Bitmap句柄该步骤需使用系统函数CreateDIBitmap。

位图的数据结构

位图的数据结构

位图的数据结构位图的数据结构1:引言1.1 概述1.2 目的1.3 范围2:位图的基本概念2.1 位图的定义2.2 位图的特点2.3 位图的应用领域3:位图的结构3.1 位图的格式3.2 位图文件头3.2.1 文件类型标识3.2.2 文件大小3.2.3 保留字节3.2.4 数据偏移量3.3 位图信息头3.3.1 信息头大小3.3.2 图像宽度和高度3.3.3 颜色平面数3.3.4 每个像素占用的位数3.3.5 压缩类型3.3.6 图像大小3.3.7 印象横向和纵向的像素数 3.3.8调色板的颜色索引数3.3.9重要的颜色索引数3.4 位图数据3.4.1 存储像素点颜色数据4:位图的存储方式4.1 位图的存储顺序4.2 位图的行填充4.3 位图的像素点排列方式5:位图的数据读写操作5.1 读取位图数据5.2 写入位图数据5.3 修改位图数据6:位图的压缩方式6.1 无压缩6.2 RLE压缩6.3 其他压缩算法7:位图的其他操作7.1 缩放位图7.2 旋转位图7.3 裁剪位图8:附件提供相关位图的示例文件,以供参考使用。

注释:1:位图 - 在计算机图形学中,指由二进制位表示图像的一种数据结构。

2:数据结构 - 计算机中组织和存储数据的方式。

3:文件头 - 含有文件的基本信息的数据结构。

4:信息头 - 含有位图的基本信息的数据结构。

5:像素 - 图像中的最小单位。

6:调色板 - 包含颜色信息的数据表。

7:压缩 - 将大数据量的文件压缩为更小尺寸的过程。

本文档涉及附件:1:位图示例文件 - 演示不同格式的位图文件供参考。

本文所涉及的法律名词及注释:1:版权法 - 保护原创作品的法律。

BMP格式结构详解

BMP格式结构详解

BMP格式结构详解位图文件(B it m a p-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。

Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(d evice-d ependent b itmap,DDB)文件格式。

Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(d evice-i ndependent b itmap,DIB)格式,目的是为了让Windows能够在任何类型的显示设备上显示BMP位图文件。

BMP位图文件默认的文件扩展名是BMP或者bmp。

6.1.2 文件结构位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它们的名称和符号如表6-01所示。

表6-01 BMP图像文件组成部分的名称和符号位图文件结构可综合在表6-02中。

表6-02 位图文件结构内容摘要6.1.3 构件详解1. 位图文件头位图文件头包含有关于文件类型、文件大小、存放位置等信息,在Windows 3.0以上版本的位图文件中用BITMAPFILEHEADER结构来定义:typedef struct tagBITMAPFILEHEADER { /* bmfh */UINT bfType;DWORD bfSize;UINT bfReserved1;UINT bfReserved2;DWORD bfOffBits;} BITMAPFILEHEADER;其中:bfType 说明文件的类型.bfSize 说明文件的大小,用字节为单位bfReserved1 保留,设置为0bfReserved2 保留,设置为0bfOffBits 说明从BITMAPFILEHEADER结构开始到实际的图像数据之间的字节偏移量2. 位图信息头位图信息用BITMAPINFO结构来定义,它由位图信息头(bitmap-information header)和彩色表(color table)组成,前者用BITMAPINFOHEADER结构定义,后者用RGBQUAD结构定义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

位图文件内部初探最常用的几种图象文件格式怎样存储图象自从我在十四年前买回第一台 pc 以后,我就一直对计算机用 1 和 0 组成的数据流来存储那些复杂的信息很感兴趣。

最初引起我注意的是当时曾很流行的印在杂志上的 basic 程序清单,它们带有很多数据段,你可将它们键入并运行,以建立其他的程序。

从这里我明白了任何程序无论它多么复杂,也只不过是一系列的针对计算机微处理器的指令而已。

接着,我对 ascii 码有了兴趣,然后是字处理文件格式,再后来吗,您就看到了图象。

直至今天仍让我着迷的一种技术是位图文件存储。

一个位图存储了计算机上能够再现一幅图象所需的信息。

我们经常在显示器上看到图象,例如一幅美丽的日落,然而在计算机眼里它只是一堆 0 和 1 的组合。

归根结底,也就是位图文件里的这些位和字节来告诉计算机这幅图象中每个象素该是什么颜色,然后计算机把位图中的颜色转化成与它的显示卡兼容的格式,最后输出到显示器上。

这个过程中有趣的是计算机怎样解释位图中的数据,位图文件有多种格式,每种格式都有自己的方法对象素数据编码并给出此种格式所要求的一些其他信息,之所以 windows 95 能够读取 .bmp 文件而不能读 .gif 文件,就是因为他的设计人员使 paint 程序能够对以 .bmp 格式存储的图象数据进行解码,而不是 .gif。

到这里。

您一定很想知道一个位图文件里究竟是什么,一种格式同另一种又有什么不同 ? 那么就让我们来简单地看看在 pc 机上常用的六种位图文件格式。

当然还有其他的文件格式,例如对于矢量图形,就是存储一些再现图象的指令而不是每个象素的颜色数据,但是在这里讨论的这六种位图文件格式才是您平时工作最可能使用的。

bmp 文件bmp(bitmap 的缩写)文件格式是 windows 本身的位图文件格式,所谓本身是指 windows 内部存储位图即采用这种格式。

一个 .bmp 格式的文件通常有 .bmp 的扩展名,但有一些是以 .rle 为扩展名的,rle 的意思是行程长度编码(run length encoding)。

这样的文件意味着其使用的数据压缩方法是 .bmp 格式文件支持的两种 rle 方法中的一种。

bmp 文件可用每象素 1、 4、 8、 16 或 24 位来编码颜色信息,这个位数称作图象的颜色深度,它决定了图象所含的最大颜色数。

一幅 1-bpp(位每象素, bit per pixel)的图象只能有两种颜色。

而一幅 24-bpp 的图象可以有超过 16 兆种不同的颜色。

下一页的图说明了一个典型 .bmp 文件的结构。

它是以 256 色也就是 8-bpp 为例的,文件被分成四个主要的部分:一个位图文件头,一个位图信息头,一个色表和位图数据本身。

位图文件头包含关于这个文件的信息。

如从哪里开始是位图数据的定位信息,位图信息头含有关于这幅图象的信息,例如以象素为单位的宽度和高度。

色表中有图象颜色的 rgb 值。

对显示卡来说,如果它不能一次显示超过 256 种颜色,读取和显示 .bmp 文件的程序能够把这些 rgb 值转换到显示卡的调色板来产生准确的颜色。

bmp 文件的位图数据格式依赖于编码每个象素颜色所用的位数。

对于一个 256 色的图象来说,每个象素占用文件中位图数据部分的一个字节。

象素的值不是 rgb 颜色值,而是文件中色表的一个索引。

所以在色表中如果第一个 r/g/b 值是 255/0/0,那么象素值为 0 表示它是鲜红色,象素值按从左到右的顺序存储,通常从最后一行开始。

所以在一个 256 色的文件中,位图数据中第一个字节就是图象左下角的象素的颜色索引,第二个就是它右边的那个象素的颜色索引。

如果位图数据中每行的字节数是奇数,就要在每行都加一个附加的字节来调整位图数据边界为 16 位的整数倍。

并不是所有的 bmp 文件结构都象表中所列的那样,例如 16 和 24-bpp,文件就没有色表,象素值直接表示 rgb 值,另外文件私有部分的内部存储格式也是可以变化的。

例如,在 16 和 256 色 .bmp 文件中的位图数据采用 rle 算法来压缩,这种算法用颜色加象素个数来取代一串颜色相同的序列,而且, windows 还支持 os/2 下的 .bmp 文件,尽管它使用了不同的位图信息头和色表格式。

pcx 文件.pcx 是在 pc 上成为位图文件存储标准的第一种图象文件格式。

它最早出现在 zsoft 公司的paintbrush 软件包中,在 80 年代早期授权给微软与其产品捆绑发行,而后转变为 microsoft paintbrush,并成为 windows 的一部分。

虽然使用这种格式的人在减少,但这种带有 .pcx 扩展名的文件在今天仍是十分常见的。

pcx 文件分为三部分,依次为: pcx 文件头,位图数据和一个可选的色表。

文件头长达 128 个字节,分为几个域,包括图象的尺寸和每个象素颜色的编码位数。

位图数据用一种简单的 rle 算法压缩,最后的可选色表有 256 个 rgb 值, pcx 格式最初是为 cga 和 ega 来设计的,后来经过修改也支持vga 和真彩色显示卡,现在 pcx 图象可以用 1、 4、 8 或 24-bpp 来对颜色数据进行编码。

tiff 文件pcx 格式是所有位图文件格式中最简单的,而 tiff(tagged image file format) 则是最难的一种。

tiff 文件含有 .tif 的扩展名。

它以 8 字节长的图象文件头开始 (ifh),这个文件头中最重要的成员是一个指向名为图象文件目录 (ifd) 的数据结构的指针。

ifd 是一个名为标记(tag)的用于区分一个或多个可变长度数据块的表,标记中含有关于图象的信息。

tiff 文件格式定义 70 多种不同类型的标记,有的用来存放以象素为单位的图象宽度和高度,有的用来存放色表 ( 如果需要的话 ),当然还必须有用来存放位图数据的标记,一个 tiff 格式文件完全为它的标记所决定,而且这种文件结构极易扩展,因为你要附加一些特征只须增加一些额外的标记。

究竟是什么使 tiff 文件如此复杂?一方面,要写一种能够识别所用不同标记的软件非常困难。

大多数 tiff 的阅读程序只能识别一部分标记,所以会出现这种情况:有时一个应用程序创建的 tiff 文件,另一个应用程序却不能使用。

创建 tiff 文件的程序还可能会在文件中加一些只有它自己认识的标记,虽然 tiff 的阅读程序可以跳过那些它们不认得的标记,但这样做总是有可能影响到图象的质量。

另一方面,一个 tiff 文件可以包含多个图象,每个图象都有自己的 ifd 和一系列标记。

tiff 文件中的位图数据可能会用好几种方法来压缩,所以一个完备的 tiff 阅读程序应该有 rle 解压缩程序, lzw 解压缩程序和其他一些算法的解压缩程序。

然而更糟的是使用 lzw 的解码必须得到 unisys 公司的同意,且通常是需要付版税的。

所以即使是一些相当不错的 tiff 阅读程序在它们遇到 lzw 算法压缩的图象时也是无能为力的。

尽管 tiff 是那么的复杂,但仍是一种最好的跨平台格式。

因为它非常灵活,无论在视觉上还是其他方面,都能把任何图象编码成二进制形式而不丢失任何属性。

gif 文件当许多图象方面的权威一想到 lzw 的时候,他们也会想到 gif(graphics interchange format,读作jiff)这是一种常用的跨平台的位图文件格式,最初为 compuserve 公司所创。

gif 文件通常带有 .gif 的扩展名,而且在 compuseve 上大量存在。

gif 文件的结构取决于它属于哪一个版本,目前的两种版本分别是 gif87a 和 gif89a,前者较简单。

无论是哪个版本,它都以一个长 13 字节的文件头开始,文件头中包含判定此文件是 gif 文件的标记、版本号和其他的一些信息。

如果这个文件只有一幅图象,文件头后紧跟一个全局色表来定义图象中的颜色。

如果含有多幅图象 (gif 和tiff 格式一样,允许在一个文件里编码多个图象 ),那么全局色表就被各个图象自带的局部色表所替代。

在 gif87a 文件中,文件头和全局色表之后是图象,它可能会是头尾相接的一串图象中的第一个,每个图象由三部分组成,一个 10 字节长的图象描述,一个可选的局部色表和位图数据。

为有效利用空间,位图数据用 lzw 算法来压缩。

gif89a 结构与此类似,但它还包括可选的扩展块来存放每个图象的附加信息。

gif89a 详细定义了四种扩展块:图象控制扩展块,它用来描述图象怎样被显示 ( 例如,显示是应该象一个透明物去覆盖上一个图象,还是简单的替换它 );简单文本扩展块,它包含显示在图象中的文本;注释扩展块,它以 ascii 文本形式存放注释 ; 应用扩展块,它存放生成该文件的应用程序的私有数据。

这些扩展块可以出现在文件中全局色表的任何地方。

gif 最显著的优点是它的广泛使用和它的紧密性。

但它有两个弱点,一个是用 gif 格式存放的文件最多只能含有 256 种颜色。

另一个可能更重要,就是那些使用了 gif 格式的软件开发者必须征得 compuserve 的同意,他们每卖出一个拷贝都要向 compuserve 付版税。

这个政策是 compuserve 仿效unisys 公司作出的,它抑制了那些程序员在他的图象应用程序中支持 gif 文件。

png 文件png(portable network graphic,发音做 ping) 文件格式是作为 gif 的替代品开发的,它能够避免使用gif 文件所遇到的常见问题。

它从 gif 那里继承了许多特征,而且支持真彩色图象。

更重要的是,在压缩位图数据时它采用了一种颇受好评的 lz77 算法的一个变种, lz77 则是 lzw 的前身,而且可以免费使用。

由于篇幅所限,在这里就不花时间来具体讨论 png 格式了。

jpeg 文件jpeg(joint photographic experts group,发音做jay-peg) 文件格式最初由 c-cube microsystems 推出,是为了提供一种存储深度位象素的有效方法,例如对于照片扫描,颜色很多而且差别细微 ( 有时也不细微 )。

jpeg 和这里讨论的其他格式的最大区别是 jpeg 使用一种有损压缩算法,无损压缩算法能在解压后准确再现压缩前的图象,而有损压缩则牺牲了一部分的图象数据来达到较高的压缩率。

但是这种损失很小以至于人们很难察觉。

jpeg 图象压缩是一个复杂的过程,经常需要专门的硬件来帮助。

首先图象以象素为单位分成 8*8 的块。

然后,每个块分三个步骤被压缩。

相关文档
最新文档