图片格式简介.

合集下载

BMP图片文件详解

BMP图片文件详解

有一个长宽各为 200 个象素,颜色数为 16 色的彩色图,每一个象素都用 R,G,B 三个分 量表示,因为每个分量有 256 个级别,要用 8 位( bit),即一个字节(byte)来表示,所以每个象素需要用 3 个字节。整个图象要用 200*200*3, 约 120k 字节,可不是一个小数目呀! 如果我们用下面的方法, 就能省的多。 因为是一个 16 色图,也就是说这幅图中最多只有 16 种颜色,我们可以用一个表:表中的每 一行记录一种颜色的 R,G,B 值。这样当我们 表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例 子,如果表的第 0 行为 255,0,0(红色) ,那么当某个象素为
色时,只需要标明 0 即可。 让我们再来计算一下:16 种状态可以用 4 位(bit)表示,所以 一个象素要用半个字节。整个图象要用 200*2 00*0.5,约 20k 字节,再加上表占用的字节为 3*16=48 字节.整个占用的字节数约为前面的 1/6,省很多吧。 这 张 RGB 的 表 , 即 是 我 们 常 说 的 调 色 板 (Palette) , 另 一 种 叫 法 是 颜 色 查 找 表 LUT(LookUpTable),似乎更确切一些。Windows 位图中便用
biXPelsPerMeter 指定目标设备的水平分辨率,单位是每米的象素个数,关于分辨率的概念,我们将在打印部 分详细介绍。
biYPelsPerMeter 指定目标设备的垂直分辨率,单位同上。
biClrUsed 指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为 2 的 biBitCount 次方。
biSizeImage 指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:

jpg和png有什么区别

jpg和png有什么区别

jpg和png有什么区别一、JPG和PNG有什么区别1、JPG格式是一种有损压缩格式,而PNG是无损压缩算法的位图格式。

2、由于JPG是有损格式,将图像压缩在很小的储存空间,一定程度上会造成图像数据的损伤,会造成锯齿状边缘。

而PNG可以为原图像定义256个透明层次,使图片边缘平滑融合,从而消除图片锯齿边缘。

3、在使用中jpg不能作为透明图片使用,而PNG支持透明效果,可以作为背景透明的图片使用。

二、JPG格式图片简介JPEG格式的图片后缀扩展名是JPG或者JPEG,所以也有称为JPG格式图片。

JPEG英文全名就是Joint Photographic Experts Group,翻译过来就是联合图像专家组(这个翻译有点奇怪哈)。

JPEG格式还有以下几个特点:1、自持压缩,可以自定义;2、文件尺寸相对较小,下载速度会相对快些,但不是所有JPEG图片都是用于网络图片显示。

3、也是因为他的特点是可压缩,尺寸小,也相对不适宜用该格式来显示高清晰度的图像。

JPEG格式分类:标准JPEG、渐进式JPEG及JPEG2000三种格式。

1、标准JPEG:1992年正式通过,是“信息技术连续色调静止图像的数字压缩编码”,该格式特点是:由上而下依序显示图像,直到图像资料全部下载完毕,才能看到图像全貌。

2、渐进式JPEG:使用过ps的同学,在保存“存储为web所用格式”时候,有一个勾选连续勾选后就是渐进式JPEG图片。

渐进式JPGE图片可以在没有下载完毕就可以看到最终图像的大致轮廓,一定程度上可以提升用户体验。

3、JPEG2000:JPEG2000提供无损和有损两种压缩方式。

JPEG2000标准是1992年通过的,与传统JPEG最大的不同在于,它放弃了以离散余弦变换(DCT)为主的区块编码方式,而采用以小波变换为主的多解析编码方式。

小波转换将一幅图像作为一个整行变换和编码,很好地保存了图像信息中的相关性,达到了更好的压缩编码效果。

图片常用文件几种格式

图片常用文件几种格式

图片文件格式简介一、格式是英文(位图)地简写,它是操作系统中地标准图像文件格式,能够被多种应用程序所支持.随着操作系统地流行与丰富地应用程序地开发,位图格式理所当然地被广泛应用.这种格式地特点是包含地图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来地缺点占用磁盘空间过大.所以,目前在单机上比较流行.二、格式是英文(图形交换格式)地缩写.顾名思义,这种格式是用来交换图片地.事实上也是如此,上世纪年代,美国一家著名地在线信息服务机构针对当时网络传输带宽地限制,开发出了这种图像格式.格式地特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛地应用. 最初地只是简单地用来存储单幅静止图像(称为),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续地动画,使之成为当时支持动画为数不多地格式之一(称为),而在图像中可指定透明区域,使图像具有非同一般地显示效果,这更使风光十足.目前上大量采用地彩色动画文件多为这种格式地文件,也称为格式文件.此外,考虑到网络传输中地实际情况,图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像地大致轮廓,然后随着传输过程地继续而逐步看清图像中地细节部分,从而适应了用户地"从朦胧到清楚"地观赏心理.目前上大量采用地彩色动画文件多为这种格式地文件.但有个小小地缺点,即不能存储超过色地图像.尽管如此,这种格式仍在网络上大行其道应用,这和图像文件短小、下载速度快、可用许多具有同样大小地图像文件组成动画等优势是分不开地.三、格式也是常见地一种图像格式,它由联合照片专家组()开发并以命名为" ",仅仅是一种俗称而已.文件地扩展名为或,其压缩技术十分先进,它用有损压缩方式去除冗余地图像和彩色数据,获取得极高地压缩率地同时能展现十分丰富生动地图像,换句话说,就是可以用最少地磁盘空间得到较好地图像质量.同时还是一种很灵活地格式,具有调节图像质量地功能,允许你用不同地压缩比例对这种文件压缩,比如我们最高可以把地位图文件压缩至.当然我们完全可以在图像质量和文件尺寸之间找到平衡点.由于优异地品质和杰出地表现,它地应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它地影子.目前各类浏览器均支持这种图像格式,因为格式地文件尺寸较小,下载速度快,使得页有可能以较短地下载时间提供大量美观地图像,同时也就顺理成章地成为网络上最受欢迎地图像格式.四、格式同样是由组织负责制定地,它有一个正式名称叫做" ",与相比,它具备更高压缩率以及更多新功能地新一代静态影像压缩技术.作为地升级版,其压缩率比高约左右.与不同地是,同时支持有损和无损压缩,而只能支持有损压缩.无损压缩对保存一些重要图片是十分有用地.地一个极其重要地特征在于它能实现渐进传输,这一点与地"渐显"有异曲同工之妙,即先传输图像地轮廓,然后逐步传输数据,不断提高图像质量,让图象由朦胧到清晰显示,而不必是像现在地一样,由上到下慢慢显示.此外,还支持所谓地"感兴趣区域"特性,你可以任意指定影像上你感兴趣区域地压缩质量,还可以选择指定地部份先解压缩. 和相比优势明显,且向下兼容,因此取代传统地格式指日可待.可应用于传统地市场,如扫描仪、数码相机等,亦可应用于新兴领域,如网路传输、无线通讯等等.五、格式()是中广泛使用地图像格式,它由和微软联合开发,最初是出于跨平台存储扫描图像地需要而设计地.它地特点是图像格式复杂、存贮信息多.正因为它存储地图像细微层次地信息非常多,图像地质量也得以提高,故而非常有利于原稿地复制.该格式有压缩和非压缩二种形式,其中压缩可采用无损压缩方案存储.不过,由于格式结构较为复杂,兼容性较差,因此有时你地软件可能不能正确识别文件(现在绝大部分软件都已解决了这个问题).目前在和机上移植文件也十分便捷,因而现在也是微机上使用最广泛地图像文件格式之一.六、格式这是著名地公司地图像处理软件地专用格式().其实是进行平面设计地一张"草稿图",它里面包含有各种图层、通道、遮罩等多种设计地样稿,以便于下次打开文件时可以修改上一次地设计.在所支持地各种图像格式中,地存取速度比其它格式快很多,功能也很强大.由于越来越被广泛地应用,所以我们有理由相信,这种格式也会逐步流行起来.七、格式()是一种新兴地网络图像格式.在年底,由于公司宣布拥有专利地压缩方法,要求开发软件地作者须缴交一定费用,由此促使免费地图像格式地诞生.一开始便结合及两家之长,打算一举取代这两种格式.年月日由向国际网络联盟提出并得到推荐认可标准,并且大部分绘图软件和浏览器开始支持图像浏览,从此图像格式生机焕发.是目前保证最不失真地格式,它汲取了和二者地优点,存贮形式丰富,兼有和地色彩模式;它地另一个特点能把图像文件压缩到极限以利于网络传输,但又能保留所有与图像品质有关地信息,因为是采用无损压缩方式来减少文件地大小,这一点与牺牲图像品质以换取高压缩率地有所不同;它地第三个特点是显示速度很快,只需下载地图像信息就可以显示出低分辨率地预览图像;第四,同样支持透明图像地制作,透明图像在制作网页图像地时候很有用,我们可以把图象背景设为透明,用网页本身地颜色信息来代替设为透明地色彩,这样可让图像和网页背景很和谐地融合在一起.地缺点是不支持动画应用效果,如果在这方面能有所加强,简直就可以完全替代和了.公司地软件地默认格式就是.现在,越来越多地软件开始支持这一格式,而且在网络上也越来截止流行.八、格式利用我们可以制作出一种后缀名为()地动画,这种格式地动画图像能够用比较小地体积来表现丰富地多媒体形式.在图像地传输方面,不必等到文件全部下载才能观看,而是可以边下载边看,因此特别适合网络传输,特别是在传输速率不佳地情况下,也能取得较好地效果.事实也证明了这一点,如今已被大量应用于网页进行多媒体演示与交互性设计.此外,动画是其于矢量技术制作地,因此不管将画面放大多少倍,画面不会因此而有任何损害.综上,格式作品以其高清晰度地画质和小巧地体积,受到了越来越多网页设计者地青睐,也越来越成为网页动画和网页图片设计制作地主流,目前已成为网上动画地事实标准.九、格式可以算是目前最最火热地图像文件格式了,它地英文全称为,意思为可缩放地矢量图形.它是基于(),由()联盟进行开发地.严格来说应该是一种开放标准地矢量图形语言,可让你设计激动人心地、高分辨率地图形页面.用户可以直接用代码来描绘图像,可以用任何文字处理工具打开图像,通过改变部分代码来使图像具有互交功能,并可以随时插入到中通过浏览器来观看.它提供了目前网络流行格式和无法具备了优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;字在图像中保留可编辑和可搜寻地状态;平均来讲,文件比和格式地文件要小很多,因而下载也很快.可以相信,地开发将会为提供新地图像标准.其它非主流图像格式:、格式格式是公司在开发图像处理软件时开发地一种格式,这是一种经过压缩地格式,占用磁盘空间较少.由于该格式出现地时间较长,并且具有压缩及全彩色地能力,所以现在仍比较流行.、格式()是中地矢量文件格式,它以码方式存储文件,在表现图形地大小方面十分精确.许多软件都支持格式地输入与输出.、格式()是中常见地一种图元文件格式,属于矢量文件格式.它具有文件短小、图案造型化地特点,整个图形常由各个独立地组成部分拼接而成,其图形往往较粗糙.、格式()是微软公司为了弥补使用地不足而开发地一种位扩展图元文件格式,也属于矢量文件格式,其目地是欲使图元文件更加容易接受。

JPEG图像格式详解

JPEG图像格式详解

JPEG图像格式详解JPEG压缩简介-------------1.色彩模型JPEG的图片使用的是YCrCb颜色模型,而不是计算机上最常用的RGB.关于色彩模型,这里不多阐述.只是说明,YCrCb模型更适合图形压缩.因为人眼对图片上的亮度Y的变化远比色度C的变化敏感.我们完全可以每个点保存一个8bit的亮度值,每2x2个点保存一个Cr Cb值,而图象在肉眼中的感觉不会起太大的变化.所以,原来用RGB模型,4个点需要4x3=12字节.而现在仅需要4+2=6字节;平均每个点占12bit.当然JPEG格式里允许每个点的C值都记录下来;不过MPEG里都是按12bit一个点来存放的,我们简写为YUV12.[R G B]->[Y Cb Cr]转换-------------------------(R,G,B都是8bit unsigned)|Y||0.2990.5870.114||R||0||Cb|=|-0.1687-0.33130.5|*|G|+|128||Cr||0.5-0.4187-0.0813||B||128|Y=0.299*R+0.587*G+0.114*B(亮度)Cb=-0.1687*R-0.3313*G+0.5*B+128Cr=0.5*R-0.4187*G-0.0813*B+128[Y,Cb,Cr]->[R,G,B]转换-------------------------R=Y+ 1.402*(Cr-128)G=Y-0.34414*(Cb-128)-0.71414*(Cr-128)B=Y+ 1.772*(Cb-128)一般,C值(包括Cb Cr)应该是一个有符号的数字,但这里被处理过了,方法是加上了128.JPEG里的数据都是无符号8bit的.2.DCT(离散余弦变换)JPEG里,要对数据压缩,先要做一次DCT变换.DCT变换的原理,涉及到数学知识,这里我们不必深究.反正和傅立叶变换(学过高数的都知道)是差不多了.经过个点为一个单位处理的.所以如果原始图片的长宽不是8的倍数,都需要先补成8的倍数,好一块块的处理.另外,记得刚才我说的Cr Cb都是2x2记录一次吗?所以大多数情况,是要补成16x16的整数块.按从左到右,从上到下的次序排列(和我们写字的次序一样).JPEG里是对Y Cr Cb分别做DCT变换的.这里进行DCT变换的Y,Cr,Cb值的范围都是-128~127.(Y被减去128)JPEG编码时使用的是Forward DCT(FDCT)解码时使用的Inverse DCT(IDCT)下面给出公式:FDCT:772*x+12*y+1F(u,v)=alpha(u)*alpha(v)*sum sum f(x,y)*cos(-------*u*PI)*cos(------*v*PI)x=0y=01616u,v=0,1,...,7{1/sqrt(8)(u==0)alpha(u)={{1/2(u!=0)IDCT:772*x+12*y+1f(x,y)=sum sum alpha(u)*alpha(v)*F(u,v)*cos(-------*u*PI)*cos(------*v*PI) u=0v=01616x,y=0,1 (7)这个步骤很花时间,另外有种AA&N优化算法,大家可以去inet自己找一下.在Intel主页上可以找到AA&N IDCT的MMX优化代码.(Intel主页上的代码,输入数据为12.4的定点数,输入矩阵需要转置90度)3.重排列DCT结果DCT将一个8x8的数组变换成另一个8x8的数组.但是内存里所有数据都是线形存放的,如果我们一行行的存放这64个数字,每行的结尾的点和下行开始的点就没有什么关系,所以JPEG规定按如下次序整理64个数字.0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,35,36,48,49,57,58,62,63这样数列里的相邻点在图片上也是相邻的了.4.量化对于前面得到的64个空间频率振幅值,我们将对它们作幅度分层量化操作.方法就是分别除以量化表里对应值并四舍五入.for(i=0;i<=63;i++)vector[i]=(int)(vector[i]/quantization_table[i]+0.5)下面有张JPEG标准量化表.(按上面同样的弯曲次序排列)1611101624405161121214192658605514131624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399这张表依据心理视觉阀制作,对8bit的亮度和色度的图象的处理效果不错.当然我们可以使用任意的量化表.量化表是定义在jpeg的DQT标记后.一般为Y值定义一个,为C值定义一个.量化表是控制JPEG压缩比的关键.这个步骤除掉了一些高频量,损失了很高细节.但事实上人眼对高空间频率远没有低频敏感.所以处理后的视觉损失很小.另一个重要原因是所有的图片的点与点之间会有一个色彩过渡的过程.大量的图象信息被包含在低空间频率中.经过量化处理后,在高空间频率段,将出现大量连续的零.注意,量化后的数据有可能超过2byte有符号整数的处理范围.5.0RLE编码现在我们矢量中有许多连续的0.我们可以使用RLE来压缩掉这些0.这里我们将跳过第一个矢量(后面将解释为什么)因为它的编码比较特别.假设有一组矢量(64个的后63个)是57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0,0,0,0,0,..,0经过RLE压缩后就是(0,57);(0,45);(4,23);(1,-30);(0,-16);(2,1);EOBEOB是一个结束标记,表示后面都是0了.实际上,我们用(0,0)表示EOB但是,如果这组数字不以0结束,那么就不需要EOB.另外需要注意的是,由于后面huffman编码的要求,每组数字前一个表示0的数量的必须是4bit,就是说,只能是0~15,所以,如果有这么一组数字:我们实际这样编码:(0,57);(15,0)(2,3);(4,2);(15,0)(15,0)(1,895),(0,0)注意(15,0)表示了16个连续的0.6.huffman编码为了提高储存效率,JPEG里并不直接保存数值,而是将数值按位数分成16组:数值组实际保存值00--1,110,1-3,-2,2,3200,01,10,11-7,-6,-5,-4,4,5,6,73000,001,010,011,100,101,110,111 -15,..,-8,8,..,1540000,..,0111,1000,..,1111-31,..,-16,16,..,31500000,..,01111,10000,..,11111-63,..,-32,32,..,636.-127,..,-64,64,..,1277.-255,..,-128,128,..,2558.-511,..,-256,256,..,5119.-1023,..,-512,512,..,102310.-2047,..,-1024,1024,..,204711.-4095,..,-2048,2048,..,409512.-8191,..,-4096,4096,..,819113.-16383,..,-8192,8192,..,1638314.-32767,..,-16384,16384,..,3276715.还是来看前面的例子:(0,57);(0,45);(4,23);(1,-30);(0,-8);(2,1);(0,0)只处理每对数右边的那个:57是第6组的,实际保存值为111001,所以被编码为(6,111001)45,同样的操作,编码为(6,101101)23->(5,10111)-30->(5,00001)-8->(4,0111)1->(1,1)前面的那串数字就变成了:(0,6),111001;(0,6),101101;(4,5),10111;(1,5),00001;(0,4),0111;(2,1),1;(0,0)括号里的数值正好合成一个字节.后面被编码的数字表示范围是-32767..32767.合成的字节里,高4位是前续0的个数,低4位描述了后面数字的位数.继续刚才的例子,如果06的huffman编码为111000(06对应111000为查表所得.对应成1~16bits的不定长数值.出现频率高的数字小于8bits,频率低的大于8bits,从而使整个的数据长度降低,关于huffman压缩算法,请查阅相关资料)69=(4,5)---1111111110011001(注:69=4*16+5=0x45)21=(1,5)---111111101104=(0,4)---101133=(2,1)---110110=EOB=(0,0)---1010那么最后对于前面的例子表示的63个系数(记得我们将第一个跳过了吗?)按位流写入JPG文件中就是这样的: 1110001110011110001011011111111110011001101111111111011000001 1011011111011110107.DC的编码-----------记得刚才我们跳过了每组64个数据的第一个吧,DC就是指的这个数字(后面63个简称AC)代入前面的FDCT公式可以得到c(0,0)77DC=F(0,0)=---------*sum sum f(x,y)*cos0*cos0其中c(0,0)=1/24x=0y=0177=---*sum sum f(x,y)8x=0y=0即一块图象样本的平均值.就是说,它包含了原始8x8图象块里的很多能量.(通常会得到一个很大的数值)JPEG的作者指出连续块的DC率之间有很紧密的联系,因此他们决定对8x8块的DC值的差别进行编码.(Y,Cb,Cr分别有自己的DC)Diff=DC(i)-DC(i-1)所以这一块的DC(i)就是:DC(i)=DC(i-1)+DiffJPG从0开始对DC编码,所以DC(0)=0.然后再将当前Diff值加在上一个值上得到当前值.下面再来看看上面那个例子:(记住我们保存的DC是和上一块DC的差值Diff)例如上面例子中,Diff是-511,就编码成如果9的Huffman编码是1111110(在JPG文件中,一般有两个Huffman表,一个是DC用,一个是AC用)那么在JPG文件中,DC的2进制表示为1111110000000000它将放在63个AC的前面,上面上个例子的最终BIT流如下:1111110000000000111000111001111000101101111111111001100110111 1111111011000001101101111101111010解码过程简述-------------8.一个数据单元Y的解码(其余类同)--------------------------------在整个图片解码的开始,你需要先初始化DC值为0.1)先解码DC:a)取得一个Huffman码(使用Huffman DC表)b)Huffman解码,看看后面的数据位数Nc)取得N位,计算Diff值d)DC+=Diffe)写入DC值:"vector[0]=DC"2)解码63个AC:-------循环处理每个AC直到EOB或者处理到64个ACa)取得一个Huffman码(使用Huffman AC表)b)Huffman解码,得到(前面0数量,组号)[记住:如果是(0,0)就是EOB了]c)取得N位(组号)计算ACd)写入相应数量的0e)接下来写入AC-----------------下一步的解码------------上一步我们得到了64个矢量.下面我们还需要做一些解码工作:2)重排列64个矢量到8x8的块中3)对8x8的块作IDCT对8x8块的(Y,Cb,Cr)重复上面的操作[Huffman解码,步骤1),2),3)]4)将所有的8bit数加上1285)转换YCbCr到RGB9.JPG文件(Byte级)里怎样组织图片信息-----------------------------------注意JPEG/JFIF文件格式使用Motorola格式,而不是Intel格式,就是说,如果是一个字的话,高字节在前,低字节在后.JPG文件是由一个个段(segments)构成的.每个段长度<=65535.每个段从一个标记字开始.标记字都是0xff打头的,以非0字节和0xFF结束.例如'FFDA','FFC4','FFC0'.每个标记有它特定意义,这是由第2字节指明的.例如,SOS(Start Of Scan='FFDA')指明了你应该开始解码.另一个标记DQT(Define Quantization Table=0xFFDB)就是说它后面有64字节的quantization表在处理JPG文件时,如果你碰到一个0xFF,而它后面的字节不是0,并且这个字节没有意义.那么你遇到的0xFF字节必须被忽略.(一些JPG里,常用用0xFF做某些填充用途)如果你在做huffman编码时碰巧产生了一个0xFF,那么就用0xFF0x00代替.就是说在jpeg图形解码时碰到FF00就把它当作FF处理.另外在huffman编码区域结束时,碰到几个bit没有用的时候,应该用1去填充.然后后面跟FF.下面是几个重要的标记--------------------SOI=Start Of Image='FFD8'这个标记只在文件开始出现一次EOI=End Of Image='FFD9'JPG文件都以FFD9结束RSTi=FFDi(i=0..7)[RST0=FFD0,RST7=FFD7]=复位标记通常穿插在数据流里,我想是担心JPG解码出问题吧(应该配合DRI使用).RST将Huffman的解码数据流复位.DC也重新从0开始计(SOS---RST0---RST1--RST2--......--RST6---RST7--RST0--...)10.标记-------下面是必须处理的标记SOF0=Start Of Frame0=FFC0SOS=Start Of Scan=FFDAAPP0=it's the marker used to identify a JPG file which uses the JFIF specification=FFE0COM=Comment=FFFEDNL=Define Number of Lines=FFDCDRI=Define Restart Interval=FFDDDQT=Define Quantization Table=FFDBDHT=Define Huffman Table=FFC411.JPG文件中Haffman表的储存-----------------------------JPEG里定义了一张表来描述Haffman树.定义在DHT标记后面.注意:Haffman代码的长度限制在16bit内.一般一个JPG文件里会有2类Haffman表:一个用于DC一个用于AC(实际有4个表,亮度的DC,AC两个,色度的DC,AC两个)这张表是这样保存的:1)16字节:第i字节表示了i位长的Huffman代码的个数(i=1到16)2)这表的长度(字节数)=这16个数字之和现在你可以想象这张表怎么存放的吧?对应字节就是对应Haffman代码等价数字.我不多解释,这需要你先了解Haffman算法.这里只举一个例子:Haffman表的表头是0,2,3,1,1,1,0,1,0,0,0,0,0,0,0,0就是说长度为1的代码没有长度为2的代码为0001长度为3的代码是100101110长度为4的代码是1110长度为5的代码是11110长度为6的代码是111110长度为7的代码没有(如果有一个的话应该是1111110)长度为8的代码是11111100.....如果表下面的数据是4557291723253428就是说45=0057=0129=10017=10123=110等等...如果你懂Haffman编码,这些不难理解12.采样系数-----------下面讲解的都是真彩JPG的解码,灰度JPG的解码很简单,因为图形中只有亮度信息.而彩色图形由(Y,Cr,Cb)构成,前面提到过,Y通常是每点采样一次,而Cr, Cb一般是2x2点采样一次,当然也有的JPG是逐点采样,或者每两点采样(横向两点,纵向一点)采样系数均被定义成对比最高采样系数的相对值.一般情况(即:Y逐点采样,Cr Cb每2x2点一次)下:Y有最高的采样率,横向采样系数HY=2纵向采样系数VY=2;Cb的横向采样系数HCb=1,纵向采样系数VCb=1;同样HCr=1,VCr=1在Jpeg里,8x8个原始数据,经过RLE,Huffman编码后的一串数据流称为一个Data Unit(DU)JPG里按DU为单位的编码次序如下:1)for(counter_y=1;counter_y<=VY;counter_y++)for(counter_x=1;counter_x<=HY;counter_x++){对Y的Data Unit编码}2)for(counter_y=1;counter_y<=VCb;counter_y++)for(counter_x=1;counter_x<=HCb;counter_x++){对Cb的Data Unit编码}3)for(counter_y=1;counter_y<=VCr;counter_y++)for(counter_x=1;counter_x<=HCr;counter_x++){对Cr的Data Unit编码}按我上面的例子:(HY=2,VY=2;HCb=VCb=1,HCr,VCr=1)就是这样一个次序YDU,YDU,YDU,YDU,CbDU,CrDU这些就描述了一块16x16的图形.16x16=(Hmax*8x Vmax*8)这里Hmax=HY=2一个(Hmax*8,Vmax*8)的块被称作MCU(Minimun Coded Unix)前面例子中一个MCU=YDU,YDU,YDU,YDU,CbDU,CrDU如果HY=1,VY=1HCb=1,VCb=1HCr=1,VCr=1这样(Hmax=1,Vmax=1),MCU只有8x8大,MCU=YDU,CbDU,CrDU对于灰度JPG,MCU只有一个DU(MCU=YDU)JPG文件里,图象的每个组成部分的采样系数定义在SOF0(FFC0)标记后13.简单说一下JPG文件的解码-------------------------解码程序先从JPG文件中读出采样系数,这样就知道了MCU的大小,算出整个图象有几个MCU.解码程序再循环逐个对MCU解码,一直到检查到EOI标记.对于每个MCU,按正规的次序解出每个DU,然后组合,转换成(R,G,B)就OK了附:JPEG文件格式~~~~~~~~~~~~~~~~-文件头(2bytes):$ff,$d8(SOI)(JPEG文件标识)-任意数量的段,见后面-文件结束(2bytes):$ff,$d9(EOI)段的格式:~~~~~~~~~-header(4bytes):$ff段标识n段的类型(1byte)sh,sl该段长度,包括这两个字节,但是不包括前面的$ff和n.注意:长度不是intel次序,而是Motorola的,高字节在前,低字节在后!-该段的内容,最多65533字节注意:-有一些无参数的段(下面那些前面注明星号的)这些段没有长度描述(而且没有内容),只有$ff和类型字节.-段之间无论有多少$ff都是合法的,必须被忽略掉.段的类型:*TEM=$01可以忽略掉SOF0=$c0帧开始(baseline JPEG),细节附后SOF1=$c1ditoSOF2=$c2通常不支持SOF3=$c3通常不支持SOF5=$c5通常不支持SOF6=$c6通常不支持SOF7=$c7通常不支持SOF9=$c9arithmetic编码(Huffman的一种扩展算法),通常不支持SOF10=$ca通常不支持SOF11=$cb通常不支持SOF13=$cd通常不支持SOF14=$ce通常不支持SOF14=$ce通常不支持SOF15=$cf通常不支持DHT=$c4定义Huffman Table,细节附后JPG=$c8未定义/保留(引起解码错误)DAC=$cc定义Arithmetic Table,通常不支持*RST0=$d0RSTn用于resync,通常被忽略*RST1=$d1*RST2=$d2*RST3=$d3*RST4=$d4*RST5=$d5*RST6=$d6*RST7=$d7SOI=$d8图片开始EOI=$d9图片结束SOS=$da扫描行开始,细节附后DQT=$db定义Quantization Table,细节附后DNL=$dc通常不支持,忽略DRI=$dd定义重新开始间隔,细节附后DHP=$de忽略(跳过)EXP=$df忽略(跳过)APP0=$e0JFIF APP0segment marker(细节略)APP15=$ef忽略JPG0=$f0忽略(跳过)JPG13=$fd忽略(跳过)COM=$fe注释,细节附后其它的段类型都保留必须跳过SOF0:Start Of Frame0:~~~~~~~~~~~~~~~~~~~~~~~-$ff,$c0(SOF0)-长度(高字节,低字节),8+components*3-数据精度(1byte)每个样本位数,通常是8(大多数软件不支持12和16) -图片高度(高字节,低字节),如果不支持DNL就必须>0-图片宽度(高字节,低字节),如果不支持DNL就必须>0-components数量(1byte),灰度图是1,YCbCr/YIQ彩色图是3,CMYK彩色图是4-每个component:3bytes-component id(1=Y,2=Cb,3=Cr,4=I,5=Q)-采样系数(bit0-3vert.,4-7hor.)-quantization table号DRI:Define Restart Interval:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-$ff,$dd(DRI)-长度(高字节,低字节),必须是4-MCU块的单元中的重新开始间隔(高字节,低字节),意思是说,每n个MCU块就有一个RSTn标记.第一个标记是RST0,然后是RST1等,RST7后再从RST0重复DQT:Define Quantization Table:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-$ff,$db(DQT)-长度(高字节,低字节)-QT信息(1byte):bit0..3:QT号(0..3,否则错误)bit 4..7:QT精度,0=8bit,否则16bit-n字节的QT,n=64*(精度+1)备注:-一个单独的DQT段可以包含多个QT,每个都有自己的信息字节-当精度=1(16bit),每个字都是高位在前低位在后DAC:Define Arithmetic Table:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~法律原因,现在的软件不支持arithmetic编码.不能生产使用arithmetic编码的JPEG文件DHT:Define Huffman Table:~~~~~~~~~~~~~~~~~~~~~~~~~~-$ff,$c4(DHT)-长度(高字节,低字节)-HT信息(1byte):bit0..3:HT号(0..3,否则错误)bit4:HT类型,0=DC table,1=AC tablebit 5..7:必须是0-16bytes:长度是 1..16代码的符号数.这16个数的和应该<=256 -n bytes:一个包含了按递增次序代码长度排列的符号表(n=代码总数)备注:-一个单独的DHT段可以包含多个HT,每个都有自己的信息字节COM:注释:~~~~~~~~~~-$ff,$fe(COM)-注释长度(高字节,低字节)=L+2-注释为长度为L的字符流SOS:Start Of Scan:~~~~~~~~~~~~~~~~~~~-$ff,$da(SOS)-长度(高字节,低字节),必须是6+2*(扫描行内组件的数量)-扫描行内组件的数量(1byte),必须>=1,<=4(否则是错的)通常是3 -每个组件:2bytes-component id(1=Y,2=Cb,3=Cr,4=I,5=Q),见SOF0-使用的Huffman表:-bit0..3:AC table(0..3)-bit 4..7:DC table(0..3)-忽略3bytes(???)备注:-图片数据(一个个扫描行)紧接着SOS段.。

常见的图片格式有哪几种,各有哪些优点?

常见的图片格式有哪几种,各有哪些优点?

常见的图片格式有哪几种?分别有什么区别?一、图片格式:光栅图片1、BMP:Windows 位图Windows 位图可以用任何颜色深度(从黑白到24 位颜色)存储单个光栅图像。

Windows 位图文件格式与其他Microsoft Windows 程序兼容。

它不支持文件压缩,也不适用于Web 页。

从总体上看,Windows 位图文件格式的缺点超过了它的优点。

为了保证照片图像的质量,请使用PNG 文件、JPEG 文件或TIFF 文件。

BMP 文件适用于Windows 中的墙纸。

优点:*. BMP 支持 1 位到24 位颜色深度。

*. BMP 格式与现有Windows 程序(尤其是较旧的程序)广泛兼容。

缺点:*.BMP 不支持压缩,这会造成文件非常大。

*. BMP 文件不受Web 浏览器支持。

2、PCX:PC 画笔“PC 画笔”图片(也被称为Z-Soft 位图)会以任何颜色深度存储单个光栅图像。

画笔图片更广泛地用于较早的Windows 程序和基于MS-DOS 的程序。

画笔图片与许多较新的程序兼容。

PCX 图片支持“行程长度编码”(RLE) 内部压缩。

优点:*. PCX 在许多基于Windows 的程序和基于MS-DOS 的程序间是标准格式。

*. PCX 支持内部压缩。

缺点:*. PCX 不受Web 浏览器支持。

3、PNG:可移植网络图形PNG 图片以任何颜色深度存储单个光栅图像。

PNG 是与平台无关的格式。

优点:*. PNG 支持高级别无损耗压缩。

*. PNG 支持alpha 通道透明度。

*. PNG 支持伽玛校正。

*. PNG 支持交错。

*. PNG 受最新的Web 浏览器支持。

缺点:较旧的浏览器和程序可能不支持PNG 文件。

*.PNG 作为Internet 文件格式,与JPEG 的有损耗压缩相比,PNG 提供的压缩量较少。

作为Internet 文件格式,PNG 对多图像文件或动画文件不提供任何支持。

BMP图片格式详解

BMP图片格式详解

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

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

Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。

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

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

二.BMP格式结构BMP文件的数据按照从文件头开始的先后顺序分为四个部分:◆位图文件头(bmp file header):提供文件的格式、大小等信息◆位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息◆调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表◆位图数据(bitmap data):图像数据区BMP图片文件数据表如下:三.BMP文件头BMP文件头结构体定义如下:typedef struct tagBITMAPFILEHEADER{UINT16 bfType; //2Bytes,必须为"BM",即0x424D 才是Windows位图文件DWORD bfSize; //4Bytes,整个BMP文件的大小UINT16 bfReserved1; //2Bytes,保留,为0UINT16 bfReserved2; //2Bytes,保留,为0DWORD bfOffBits; //4Bytes,文件起始位置到图像像素数据的字节偏移量} BITMAPFILEHEADER;BMP文件头数据表如下:四.BMP信息头BMP信息头结构体定义如下:typedef struct _tagBMP_INFOHEADER{DWORD biSize; //4Bytes,INFOHEADER结构体大小,存在其他版本INFOHEADER,用作区分LONG biWidth; //4Bytes,图像宽度(以像素为单位)LONG biHeight; //4Bytes,图像高度,+:图像存储顺序为Bottom2Top,-:Top2BottomWORD biPlanes; //2Bytes,图像数据平面,BMP存储RGB数据,因此总为1 WORD biBitCount; //2Bytes,图像像素位数DWORD biCompression; //4Bytes,0:不压缩,1:RLE8,2:RLE4DWORD biSizeImage; //4Bytes,4字节对齐的图像数据大小LONG biXPelsPerMeter; //4 Bytes,用象素/米表示的水平分辨率LONG biYPelsPerMeter; //4 Bytes,用象素/米表示的垂直分辨率DWORD biClrUsed; //4 Bytes,实际使用的调色板索引数,0:使用所有的调色板索引DWORD biClrImportant; //4 Bytes,重要的调色板索引数,0:所有的调色板索引都重要}BMP_INFOHEADER;BMP信息头数据表如下:五.BMP调色板BMP调色板结构体定义如下:typedef struct _tagRGBQUAD{BYTE rgbBlue; //指定蓝色强度BYTE rgbGreen; //指定绿色强度BYTE rgbRed; //指定红色强度BYTE rgbReserved; //保留,设置为0 } RGBQUAD;1,4,8位图像才会使用调色板数据,16,24,32位图像不需要调色板数据,即调色板最多只需要256项(索引0 - 255)。

JFIF、EXIF,DCF三种格式说明

JFIF、EXIF,DCF三种格式说明

JFIF、EXIF、DCF三种格式说明一、JFIF格式1.1JFIF简介JPEG是图片存储格式之一,由JPEG格式衍生而来,后缀为".jfif"。

JPEG本身只有描述如何将一个图像转换为字节的数据串流(streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。

一个由独立JPEG小组(Independent JPEG Group)所建立的额外标准,称为JFIF (JPEG File Interchange Format,JPEG档案交换格式),详细说明如何从一个JPEG串流,产出一个适合于电脑储存和传输(像是在因特网上)的档案。

当有人称呼一个"JPEG档案",一般而言他是意指一个JFIF档案,或有时候是一个Exif JPEG档案。

然而,也有其他以JPEG为基础的档案格式,像是JNG。

JPEG/JFIF是最普遍在万维网(World Wide Web)上被用来储存和传输图片的格式。

它并不适合于线条绘图(drawing)和其他文字或图示(iconic)的图形,因为它的压缩方法用在这些图形的型态上,会得到不适当的结果(PNG和GIF格式通常是用来针对这种目的之图形;GIF每一像素只有8位元,并不很适合于用在彩色照片,PNG 可以被用来无失真地储存照片,但是档案太大让它不适合在网页上放照片)。

对于JFIF的MIME媒体型态是image/jpeg。

微处理机中的数据存放顺序有大端(big endian)小端(little endian)之分。

大端顺序是指高字节数据存放在低地址处,低字节数据存放在高地址处,而小端顺序是指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。

例如,十六进制数为A02B,按大端顺序存放就是A02B,按小端顺序存放就是2BA0。

摩托罗拉(Motorola)公司的微处理器使用大端顺序存放,而英特尔(Intel)公司的微处理器使用小端顺序。

常见的图片格式类别及优缺点分析

常见的图片格式类别及优缺点分析

常见的图片格式类别及优缺点分析摘要:本文主要论述了常见的几种图片格式,并着重分析了各种图片格式的优缺点。

关键词:图片格式;正文:一、BMP格式 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。

随着Windows 操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。

这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。

所以,目前BMP在单机上比较流行。

二、GIF格式 GIF是英文Graphics Interchange Format(图形交换格式)的缩写。

顾名思义,这种格式是用来交换图片的。

事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。

GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。

最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。

目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式文件。

此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。

目前Internet上大量采用的彩色动画文件多为这种格式的文件。

但GIF有个小小的缺点,即不能存储超过256色的图像。

尽管如此,这种格式仍在网络上大行其道应用,这和GIF 图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不开的。

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

TGA
• tga格式是图片专有格式,专用于 Truevision(R)视频版系统,TGA格式 (Tagged Graphics)是由美国Truevision公司 为其显示卡开发的一种图像文件格式,文 件后缀为“.tga”,已被国际上的图形、 图像工业所接受。TGA的结构比较简单, 属于一种图形、图像数据的通用格式。
• BMP • JPEG • PNG • TIFF • GIF • PCX • TGA • EXIF • FPX • SVG
PSD CDR PCD DXF UFO EPS • AI • RAW
• • • • • •
BMP
• BMP是一种与硬件设备无关的图像文件格 式,使用非常广。它采用位映射存储格式, 除了图像深度可选以外,不采用其他任何 压缩,因此,BMP文件所占用的空间很大。 BMP文件的图像深度可选lbit、4bit、8bit及 24bit。BMP文件存储数据时,图像的扫描 方式是按从左到右、从下到上的顺序。
PCX
• PCX图像格式 PCX这种图像文件的形成是有一个发展过程的。最先的 PCX雏形是出现在ZSOFT公司推出的名叫PC PAINBRUSH的用于绘画的商 业软件包中。以后, 微软公司将其移植到 Windows环境中,成为Windows系 统中一个子功能。先在 微软的Windows3.1中广泛应用,随着Windows的流 行、升级,加之其强大的图像处理能力,使PCX同GIF、TIFF、BMP图像文 件格式一起,被越来越多的图形图像软件工具所支持,也越来越得到人们的 重视。 PCX是最早支持彩色图像的一种文件格式,现在最高可以支持 256种彩色,如图4-25所示,显示256色的彩色图像。PCX设计者很有眼光地 超前引入了彩色图像文件格式,使之成为现在非常流行的图像文件格式。 PCX图像文件由文件头和实际图像数据构成。文件头由128字节组成,描述 版本信息和图像显示设备的横向、纵向分辨率,以及调色板等信息:在实际 图像数据中,表示图像数据类型和彩色类型。PCX图像文件中的数据都是用 PCXREL技术压缩后的图像数据。 PCX是PC机画笔的图像文件格式。 PCX的图像深度可选为l、4、8bit。由于这种文件格式出现较早,它不支持真 彩色。PCX文件采用RLE行程编码,文件体中存放的是压缩后的图像数据。 因此,将采集到的图像数据写成PCX文件格式时,要对其进行RLE编码:而 读取一个PCX文件时首先要对其进行 RLE解码,才能进一步显示和处理。
JEPG
• Jpeg 格式扩展名是jpg,压缩技术十分先进, 在网络上和光盘读物上。是网络上最受欢 迎的图像格式。 • JPEG 是Joint Photographic Experts Group (联合图像专家小组))的缩写。JPEG的 压缩方式通常是破坏性资料压缩(lossy compression),意即在压缩过程中图像的 品质会遭受到可见的破坏,有一种以JPEG 为基础的标准Progressive JPEG是采用无 失真的压缩方式,但Progressive JPEG并 没有受到广泛的支援。
TIFF
• TIFF为图像文件格式,是由数码相机内影 像生成器生成的照片格式,它们是由照相 机完成的影像。TIFF与JPEG和PNG一起成 为流行的高位彩色图像格式。但TIFF图像 格式复杂,存储内容多,占用存储空间大, 其大小是GIF图像的3倍,是相应的JPEG图 像的10倍。
GIF
• GIF(Graphics Interchange Format)的原义是“图 像互换格式”,是CompuServe公司在 1987年开 发的图像文件格式。GIF文件的数据,是一种基 于LZW算法的连续色调的无损压缩格式。其压缩 率一般在50%左右,它不属于任何应用程序。目 前几乎所有相关软件都支持它,公共领域有大量 的软件在使用GIF图像文件。GIF图像文件的数据 是经过压缩的,而且是采用了可变长度等压缩算 法。GIF格式的另一个特点是其在一个GIF文件中 可以存多幅彩色图像,如果把存于一个文件中的 多幅图像数据逐幅读出并显示到屏幕
• PNG是20世纪90年代中期开始开发的图像文件存 储格式,其目的是企图替代GIF和TIFF文件格式, 同时增加一些GIF文件格式所不具备的特性。流 式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式, 读成“ping”。PNG用来存储灰度图像时,灰度 图像的深度可多到16位,存储彩色图像时,彩色 图像的深度可多到48位,并且还可存储多到16位 的α通道数据。PNG使用从LZ77派生的无损数据 压缩算法。
EXIF
• • • • • • • Exif (Exchangeable image file format) 是可交换图像文件的缩写,是专门为 数码相机的照片设定的,可以记录数字照片的属性信息和拍摄数据。 Exif 最初由日本电子工业发展协会在 1996 年制定,版本为 1.0。1998 年, 升级到 2.1,增加了对音频文件的支持。2002 年 3 月,发表了 2.2 版。 Exif 可以附加于 JPEG、TIFF、RIFF 等文件之中,为其增加有关数码相机 拍摄信息的内容和索引图或图像处理软件的版本信息。 Exif 是一个为数码相机使用的图像文件格式而制定的标准规格。它由日本电 子工业发展协会(JEIDA - Japan Electronic Industry Development Association)创建。该规格使用现有的文件格式,如 JPEG,TIFF Rev. 6.0, 和 RIFF WAVE 音频文件格式,和一些额外添加的特殊元数据标签。它不支 持 JPEG 2000 或 PNG。 该规格的 V2.1 版本于 1998 年 1 月制定,V2.2 版本于 2002 年 4 月制定。
相关文档
最新文档