图片格式简介.

合集下载

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 图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不开的。

PNG图片格式详解

PNG图片格式详解

PNG图⽚格式详解2-2 PNG图⽚格式详解1. PNG格式⽂件简介PNG(Portable Network Graphics,便携式⽹络图形),是⼀种采⽤⽆损压缩算法的位图格式。

其设计⽬的是试图替代GIF和TIFF⽂件格式,同时增加⼀些GIF⽂件格式所不具备的特性。

⼀般应⽤于JAVA程序、⽹页或S60程序中,原因是它压缩⽐⾼,⽣成⽂件体积⼩。

2. PNG⽂件结构详解PNG图像格式⽂件由以下结构组成:⽂件头/⽂件署名域:⼀个8字节的PNG⽂件署名域(即⽂件头)数据块:按照特定结构组织的3个以上的数据块组成2.1 ⽂件署名域实际上就是PNG⽂件的⽂件头。

PNG⽤8字节的⽂件署名域来识别该⽂件是不是PNG⽂件。

⽂件头/⽂件署名域:89 50 4e 47 0d 0a 1a 0a2.2 数据块2.2.1 数据块结构:PNG⽂件中,每个数据块由4个部分组成,如下:名称字节数说明Length (长度)4字节指定数据块中数据域的长度,其长度不超过(231-1)字节Chunk Type Code (数据块类型码)4字节数据块类型码由ASCII字母(A-Z和a-z)组成Chunk Data (数据块数据)可变长度存储按照Chunk Type Code指定的数据CRC (循环冗余检测)4字节存储⽤来检测是否有错误的循环冗余码2.2.2 数据块类型:PNG定义了两种类型的数据块:⼀种是称为关键数据块(必需的数据块),另⼀种是辅助数据块(可选的数据块)。

关键数据块定义了4个标准数据块,每个PNG⽂件都必须包含它们,PNG读写软件也都必须要⽀持这些数据块。

1. 关键数据块:IHD:⽂件头数据块。

它包含有PNG⽂件中存储的图像数据的基本信息,并要作为第⼀个数据块出现在PNG数据流中,⽽且⼀个PNG数据流中只能有⼀个⽂件头数据块。

PLTE:调⾊板数据块。

对于索引图像来说,调⾊板信息是必须的,它包含有与索引彩⾊图像相关的彩⾊变换数据,⽽且要放在图像数据块IDAT之前。

几种常见图片格式简介

几种常见图片格式简介

几种常见图片格式简介1、PSD格式PSD格式是使用Photoshop软件生成的图像格式,这种格式可以包含有层、通道和色彩模式,并且还可以保存具有调节层、文本层的图像。

在保存图像时,若图像中包含有层,则必须用Photoshop的PSD格式保存。

若要将具有层的PSD格式图像保存成其他格式的图像,则在保存之前需要先将层合并。

PSD格式在保存时会将文件压缩以节省磁盘空间但由于PSD格式所包含的图像数据信息较多,因此比其他格式的图像文件要大得多。

2、BMP格式BMP(Windows Bitmap)格式最早应用于微软公司出品的Microsoft Windows系统,是一种MS-Windows标准的点阵式图形文件格式,它支持RGB、Imdexed-Color、灰度和位图色彩模式,但是不支持Alpha通道。

该文件格式还可以支持1——24位的格式。

3、TIFF格式TIFF格式的出现是为了便于应用软件之间进行图像数据的交换,其全名是“Tagged ImageFile Format(标志图像文件格式)”。

因此TIFF文件格式的应用非常广泛,可以在许多图像软件之间转换。

TIFF格式支持RGB、CMYK、Lab、Indexed-Color、位图模式和灰度色彩模式,并且在RGB、CMYK和灰度三种色彩模式中还支持使用Alpha通道。

TIFF格式独立于操作系统和文件,它对于PC机和Mac机一视同仁,大多数扫描仪都输出TIFF格式的图像文件。

4、PCX格式PCX图像格式最早是Zsoft公司PC Paintbrush图形软件所支持的图像格式。

随着PC Paintbrush软件的流行,PCX格式也比较流行起来。

PCX格式与BMP 格式一样,也支持1——24bits的格式,此外还支持RGB、Indexed-Color、灰度等色彩模式,但不Alpha 通道。

5、JPEG格式JPEG格式的图像通常应用于图像预览和一些超文本文档中,该格式文件的一个最大特点就是文件比较小,经过高倍率的压缩,是目前所有格式中压缩比最高的格式。

JPEG图像格式详解

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文件中就是这样的: 1110001110011110001011011111111110011001101111111111 011000001 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流如下:1111110000000000111000111001111000101101111111111 001100110111 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忽略(跳过)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)备注:-当精度=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段.。

heic转化格式

heic转化格式

heic转化格式在互联网时代,我们经常会遇到各种图片格式,其中就包括了.heic格式。

虽然这个格式相对较新,但它具有一些独特的优势,让它成为了越来越多人使用的选择。

本文将介绍heic格式的特点以及如何进行转换。

一、heic格式简介HEIC(High Efficiency Image Format)是一种高效的图像压缩格式,由Moving Picture Experts Group(MPEG)制定,并且被苹果公司广泛应用于其设备上。

与传统的JPEG格式相比,heic格式可以在相同的图像质量下减小图像文件的大小,从而节省存储空间。

二、为什么需要heic转化格式尽管heic格式在苹果设备上表现出色,但在某些情况下,我们可能需要将heic格式转化为其他常见的图片格式。

这些情况包括但不限于以下几个方面:1.兼容性:heic格式并非所有设备和操作系统都广泛支持。

如果将heic格式的照片发送给一些设备或操作系统不兼容的朋友或合作伙伴,那么他们可能无法正确查看或处理这些照片。

2.编辑需求:对于某些图片编辑软件或在线图片编辑服务来说,他们可能不支持heic格式。

如果我们希望在这些工具中对图片进行编辑,那么就需要首先将图片转化为他们支持的格式。

3.网页发布:对于网页开发人员来说,他们通常希望使用广泛兼容的图片格式,以确保网页的正常展示和加载速度。

在这种情况下,将heic格式转化为其他常见格式(如JPEG)就显得尤为重要。

三、heic转化格式方法有多种方法可以将heic格式转化为其他格式,下面将介绍两种常用的转化方法:1.使用在线转换工具:许多在线图片转换工具(如Zamzar、CloudConvert等)都支持heic格式转换。

我们只需要打开这些工具的网页,选择要转换的heic文件并选择要转换成的目标格式,工具会自动完成转换并提供下载链接。

2.使用图片编辑软件:一些常见的图片编辑软件(如Adobe Photoshop、GIMP等)也可以用于heic格式转换。

拍照raw是什么意思

拍照raw是什么意思

拍照raw是什么意思
拍照raw指的是没有经过相机处理的原文件。

为了让更多的朋友能够了解拍照raw的相关问题,这里我为大家科普一下。

一:raw格式的简介
raw格式是一种图片格式,也是一种“未经加工”的原始图片格式。

其实RAW格式的全称是RAW Image Format。

RAW格式全称为RAW图像格式,编程中称之为原始格式。

RAW 文件记录了数码相机传感器的原始信息,同时记录相机拍摄的一些元数据(如ISO设置、快门速度、光圈值、白平衡等等)。

RAW 是一种未经处理、未经压缩的格式,它可以将RAW概念化为“原始图像编码数据”,或者更形象地称之为“数字底片”。

同时RAW也是是一种默认的光盘文件系统。

在光碟刻录方式中,有一种RAW方式,即读取完整扇区数据并进行刻录。

但是,并非所有刻录机都支持RAW模式刻录。

二:拍照raw的知识
拍照raw指的是相机CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。

简单来说拍照raw指的是没有经过相机处理的原文件。

RAW文件直接来自CCD或者CMOS,几乎没有经过任何处理,通过后期处理可以使摄影师的艺术才华得到一定程度的发挥。

RAW文件没有设置白平衡,但真实数据并未发生变化,也就是说作者可以在不影响图像质量的情况下,随意调整色彩和白平衡。

RAW文件的主要优势在于它能被转换成16位图像,也就是说,拍的照片有65536层可以调整。

所以根据以上的这些知识点,我们就知道拍照raw指的就是没有经过相机处理的原文件。

JPEG图片格式详解

JPEG图片格式详解

JPEG图⽚格式详解2-1 JPEG图⽚格式详解1. JPEG格式⽂件简介JPEG(Joint Photographic Experts Group,联合图像专家⼩组),是⼀种常⽤的图像存储格式, jpg/jpeg是24位的图像⽂件格式,也是⼀种⾼效率的压缩格式,是⾯向连续⾊调静⽌图像的⼀种压缩标准。

同样⼀幅画⾯,⽤.jpg/.jpeg格式储存的⽂件是其他类型图形⽂件的1 /10~1/20。

⼀般情况下,.jpg/.jpeg⽂件只有⼏⼗KB,⽽⾊彩数最⾼却可达到24位,所以它被⼴泛运⽤在Internet上,以节约宝贵的⽹络传输资源。

1.1 拓展名.jpg与.jpegJPEG的⽂件格式⼀般有两种⽂件扩展名:.jpg和.jpeg,这两种扩展名的实质是相同的,我们可以把.jpg的⽂件改名为.jpeg,⽽对⽂件本⾝不会有任何影响。

严格来讲,JPEG的⽂件扩展名应该为.jpeg,由于DOS时代的8.3⽂件名命名原则,就使⽤了.jpg的扩展名,这种情况类似于.htm和.html的区别。

1.2 JPEG的三种格式JPEG格式可以分为:标准JPEG、渐进式JPEG 和 JPEG2000三种格式。

标准JPEG:该类型的图⽚⽂件,在⽹络上应⽤较多,只有图⽚完全被加载和读取完毕之后,才能看到图⽚的全貌;它是⼀种很灵活的图⽚压缩⽅式,⽤户可以在压缩⽐和图⽚品质之间进⾏权衡。

不过通常来讲,其压缩⽐在10:1到40:1之间,压缩⽐越⼤,品质就越差,压缩⽐越⼩,品质就越好。

渐进式JPEG:该类型的图⽚是对标准JPEG格式的改进,当在⽹页上下载渐进式JPEG图⽚时,⾸先呈现图⽚的⼤概外貌,然后再逐渐呈现具体的细节部分,因⽽被称之为渐进式JPEG。

JPEG2002:⼀种全新的图⽚压缩发,压缩品质更好,并且改善了⽆线传输时,因信号不稳定⽽造成的马赛克及位置错乱等问题。

另外,作为JPEG的升级版,JPEG2000的压缩率⽐标准JPEG⾼约30%,同时⽀持有损压缩和⽆损压缩。

PHOTOSHOP保存图片的几种格式详解

PHOTOSHOP保存图片的几种格式详解

PHOTOSHOP保存图⽚的⼏种格式详解PHOTOSHOP保存图⽚的⼏种格式详解1 PSD:Photoshop 的⾃⾝格式,能⽀持 Photoshop 的全部信息:α通道,专⾊通道,多图层,路径和剪贴路径,它还⽀持Photoshop 使⽤的任何颜⾊深度和图象模式。

PSD格式是采⽤RLE的⽆损压缩。

在 Photoshop 中存储和打开此格式也是较快速的。

2 TIFF:TIFF ⽀持位图、灰度模式、索引模式、RGB、CMYK、和Lab等图象模式。

TIFF⽀持RLE。

也⽀持LZW压缩模式。

它是跨平台的图象格式,既可在Windows,⼜可在Macintosh中打开和存储。

它被页⾯布局程序⼴泛地接受,常⽤于出版和印刷业中。

3 EPS:EPS是 Photoshop ⽤ PostScript语⾔开发的⼀个图象格式,它既能包含栅格图,⼜能包含⽮量图。

它还⽀持剪贴路径,并在页⾯布局应⽤程序中,成为透明图象。

它不⽀持α通道。

Photoshop 中保存的EPS⽂件,只包含栅格图。

EPS 的编码:ASCII 在打印时不易出问题⼆进位制在打印时易发⽣错误JPEG: 在⽮量图应⽤程序中保存的EPS⽂件,在 Photoshop 中可以⽤“置⼊”命令置⼊。

置⼊后,可调节他的⼤⼩⽽保持它的清晰度。

4 PCX:它是最早得到⼴泛应⽤的⽂件格式。

它⽀持位图、索引模式、灰度模式和真彩⾊的RGB 模式,但不⽀持通道和 CMYK 模式。

它也和 PSD ⼀样⽤ RLE压缩,但它的⽂件较 PSD 要⼤些。

5 PDF:它是 Adobe Acrobat 电⼦阅读器所使⽤的格式,可以在很多操作系统中阅读它的⽂件。

它与 web ⽂件⼀样有超⽂本链接,阅读极其⽅便。

但它们⽂件质量要⾼于 web ⽂件。

如在 Photoshop 中置⼊的PDF⽂件,只能置⼊⾸页。

⽤“⽂件/⾃动/多页⾯PDF到PSD”命令,可以图层的形式置⼊PDF。

它以Photoshop PDF格式保存时,可⽤位图、灰度模式、索引模式、RGB、CMYK以及Lab模式保存。

BMP图片格式

BMP图片格式

缩)、1(BI_RLE8压缩类型)、2(BI_RLE4压缩类型)之一。
(31-34字节)
static int sizeImage;// 位图的大小,以字节为单 位(35-38字节)
int biXPelsPerMeter;// 位图水平分辨率,每 米像素数(39-42字节)
int biYPelsPerMeter;// 位图垂直分辨率,每 米像素数(43-46字节)
每像素占用的位 数,即bpp
每个像素所需的
位数,必须是 1(双色)、4(16色)、 8(256色)、24(真
彩色)之一
字节顺序 31,32,33,34 35,36,37,38
39,40,41,42
43,44,45,46 47,48,49,50 51,52,53,54
数据结构 int int
int
int int int
今天讲的是打开真彩色BMP位图。真 彩色即24位图,它是不需要调色板的。
4:位图数据
这部分的内容因位图实际像素位数和编码格式 而不同,在真彩位图中直接使用RGB真彩色值; 而有调色板的位图则使用调色板中颜色索引值。
位图数据的读取
1.每行的字节数必须是4的倍数,如果不 是,则需要用0补齐。
2.BMP位图数据的存放是从下到上,从左 到右的。先读最后一行,读完后在读倒 数第二行。
返回
2:图像参数,它包含图像的宽、高、压缩方法,以及颜色定义等信息;
字节顺序
数据结构
描述
15,16,17,18
当前结构体的大
int
小,通常是40或
56
19,20,21,22 23,24,25,26
int
图像宽度(像素)
int

什么是gif、jpg、png格式的图片

什么是gif、jpg、png格式的图片

常用的图片格式:BMP图像文件格式BMP是一种与硬件设备无关的图像文件格式,使用非常广。

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

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

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

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

典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。

TIFF图像文件格式TIFF (TaglmageFileFormat)图像文件是由Aldus和Microsoft公司为桌上出版系统研制开发的一种较为通用的图像文件格式。

TIFF格式灵活易变,它又定义了四类不同的格式:TIFF-B 适用于二值图像:TIFF-G适用于黑白灰度图像;TIFF-P适用于带调色板的彩色图像:TIFF-R 适用于RGB真彩图像。

TIFF支持多种编码方法,其中包括RGB无压缩、RLE压缩及JPEG压缩等。

TIFF是现存图像文件格式中最复杂的一种,它具有扩展性、方便性、可改性,可以提供给IBMPC等环境中运行、图像编辑程序。

TIFF图像文件由三个数据结构组成,分别为文件头、一个或多个称为IFD的包含标记指针的目录以及数据本身。

TIFF图像文件中的第一个数据结构称为图像文件头或IFH。

这个结构是一个TIFF文件中唯一的、有固定位置的部分;IFD图像文件目录是一个字节长度可变的信息块,Tag标记是TIFF 文件的核心部分,在图像文件目录中定义了要用的所有图像参数,目录中的每一目录条目就包含图像的一个参数。

GIF文件格式GIF(Graphics Interchange Format)的原义是"图像互换格式",是CompuServe公司在1987年开发的图像文件格式。

图像文件格式有哪些以及如何选择

图像文件格式有哪些以及如何选择

图像⽂件格式有哪些以及如何选择⼀、哪三种格式?分别为:gif、jpg、png。

⼆、优化图像⽂件为何重要?对于访问量不⾼的⽹站⽽⾔,图像的优化也许并不会引起我们太⼤的关注,但是如果⽇访问量都在数以万计的⽹站,简单举例是100000,那么某张图⽚的⼤⼩减⼩3k,⼀个⽉下来就节省了9G的带宽,这不管对于同时访问该⽹站的⽤户,还是⽹站运营本⾝来说,都将减少更少的开销。

三、不得不提及的⼏个概念1、有损压缩与⽆损压缩关于这两个概念,我在淘宝UED的blog上看到相关的⽂章,觉得很不错,链接进⼊图⽚格式与设计那点事⼉。

2、⾊深指某种图像格式包含的颜⾊的多少。

⽤位表⽰,如8位⾊深表⽰256种颜⾊。

四、三种格式的简介1、gif(1)只⽀持8位⾊深模式,即在同⼀张图像上只能存在256种颜⾊,如果超出,则某些颜⾊信息将丢失。

(2)⽀持1位透明度,即要么全透明,要么不透明。

(3)⽀持基于桢的简单动画(这是其他两种格式所不具备的)(4)何时可⽤?颜⾊值较少,有⼤块相同颜⾊区域的图像适合保存为此格式。

2、jpg(1)⽀持24位⾊深(2)不⽀持透明度(3)可对该格式的图像进⾏压缩,压缩的时候可设置等级。

等级越⾼,图像越清晰,但是⽂件也就越⼤;反之亦然。

所以在压缩的时候必须在图像质量和⽂件⼤⼩之间权衡利弊。

(4)何时可⽤?颜⾊值较多,⾊彩和细节丰富的图像适合保存为此格式。

3、png(1)提供两种⾊深模式:8位和24位。

(2)24位⾊深的png⽂件能做到⽆损压缩,但是⽂件也相应的会很⼤,并且在ie6下不被⽀持。

(3)8位⾊深的png⽂件使⽤了类似gif的颜⾊索引,且在多数情况下,同等设置下⽤的png压缩的图像要⽐gif⼩。

(4)何时可⽤?推荐使⽤8位⾊深的png⽂件。

五、结语选择图像⽂件格式应该在透明度、⾊深、压缩率三者之间权衡⼀番,如果颜⾊⾊彩丰富,并且⽆需透明度⽀持,那么jgp⽆疑是最合适的选择;如果需要透明度⽀持,那么jpg⽆疑⼜是第⼀个得排除的选项。

  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 月制定。
相关文档
最新文档