编辑: You—灰機 2019-07-02
缺点: ???? PNG虽然有是一个经过深思熟虑而规划出的档案格式,但它还是有不尽完美 ???? 的地方: ???? (1)PNG不支援单个档案储存多张图片: ??????? 我们知道动画GIF89a模式可以储存多张GIF图片在同一个档案中,如此可以 ??????? 在网页上做出动画效果.

PNG则因为PNG GROUP坚持PNG是一个"单张图片" ??????? 的档案格式而不支援这方面的应用. 不过PNG的Document中也有提到应用 ??????? 程式可以藉由自定chunk的方式来储存多张图片,不过这并不是一个标准, ??????? 所以不具实用性. ???? (2)PNG不支援CYMK模式: ??????? CYMK色彩模式是应用於印刷出版的图档色泽表示法, PNG被界定为是一个 ??????? 专门用於跨平台网路传输的档案格式, PNG GROUP认为CYMK对於device的??????? 依赖性太重,所以PNG不支援CYMK, 这使得当我们要将CYMK的图档转为PNG ??????? 格式时,必须先将色彩模式转成RGB, 否则便会发生色彩错乱的情形. ???? (3)PNG没有储存DPI资讯: ??????? DPI是一种决定图档列印品质的资讯,例如300DPI就表示要将

300 pixel ??????? 列印在一英嫉墓围间. PNG GROUP也把这个视为是一种device依赖性大 ??????? 的资讯,所以不予储存. ???? 基於(2)(3)与实际接触的结论,我发现印刷厂的技术人员都对PNG兴趣缺缺,而???? 且坚持PNG是一种有破坏压缩的格式.因此请不要跟他们争论PNG的非破坏压缩 ???? 定义,他们通常不是很t解,也没必要t解. Adaptive: 将以上五种演算法都算一遍,找出相差值最少的方法.每个scaneline 用不同的filter. ???? 值得注意的是,filter的应用仅适於全彩模式的图档,对於一个256色的图档, ???? 最佳的Filter是0 None,即使你用Adaptive也不会比0好. ???? (3)zlib资料压缩法: ???? PNG格式中,先将资料流以"Deflate"的方式压缩,再将资料存成"zlib"格式: Compression method/flags code:

1 byte Additional flags/check bits:??

1 byte Compressed data blocks:n bytes Check value:4 bytes ???? 其中限定用第八种压缩法(zlib可使用多种压缩法,第8种即Deflate), ???? LZ77window size 不可超过32K. ????? ???? Deflate是一种由LZ77与Huffman coding组合而成的演算法,先把所有资料以 ???? Huffman???? code加以重新编码,每个block可以使用不同的Huffman tree, ???? Huffman tree也同时记录在blobk内,tree本身则是用标准Huffman tree加以 ???? 编码. 然后再指定window size如32K),在这个window size之内若有重复的字 ???? 串出现,则第二次以后出现的字串改用一个pointer代替, pointer记录的是 ???? (长度,距离), 代表字串的长度及与第一个字串的距离. pointer中长度与距 ???? 离分别使用不同的Huffman tree. ???? 完成编码后,在block尾端加上未压缩资料的CRC check码. ???? zlib主要的特点在於它没有版权上的问题,并且提供跨平台性的C程式原始码. ???? 实验显示, 使用使用zlib压缩加上filter辅助的PNG图档大小小於使用非破坏 ???? 性JPEG压缩演算法所存出的图档(目前.jpg档均为破坏性压缩, 非破坏性的 ???? JPEG并没有被实际应用...). 格式介绍: PNG将图档中的各类资讯区分为"Chunk", 将Chunk的名称代号记录在Chunk的???? 开头以利辨别,并规定的各Chunk的内容及顺序: ???? 1st: IHDR(档头) 记录图档大小,色彩类型,使用压缩法,使用滤镜及是否交错显示. PNG容许档案使用不同的压缩法来压缩资料流,以便再未来发展出更 好的压缩法时能加以升级.目前内定的压缩法是zlib deflation, 并将sliding window大小设为32K,详细请参照以下的"演算法". 滤镜则是针对图档不同於一般资料的特性,以一些"预测值"的方法 来增进压缩比的辅助工具. PNG内定有6种滤镜. Type??? Name 0?????? None 1?????? Sub 2?????? Up 3?????? Average 4?????? Paeth? Adaptive PNG允许图档中的每条scanline分别使用不同的filter.应用程式也 可以自己制定新的filter.详细请参照以下的"演算法". ???? 2nd: PLTE(色盘) 对於256色图档,这个区段储存该图档使用的256色盘. 对於全彩图档,当周边显示设备不支援全彩模式,而必须将将图档 加以Quantize成256色时,这个区段的资料会被拿来当成内定的 Quantize色盘. 灰阶图档不储存PLTE ???? 3rd: IDAT(压缩资料) 储存压缩的图档pixel资料. ???? 4nd: IEND(档尾)????? ???? 另外有其他optional的Chunk,可有可无,分别出现於IDAT之前或PLTE之前: ???? cHRM(色品及白色参考点): 记录device-independent specification, 指定 ???? 图档的色品(chromaticities)及应为白色的色彩参考点. ???? gAMA(光度校正): 如前所述,解决输出设备不同造成的色彩差异. ???? hIST(Histogram): 图档中,每种颜色pixel的出现频率,用於影像处理. ???? pHYs(pixel大小): 指定图档的Pixel与显示器pixel之间的大小及形状比例. ???? sBIT(Significant bits): 指定一个Pixel byte中bit的重要顺序,用於交错 ???? 显示时. ???? tEXt(文字资讯): 作者, 出处, 备注... 等文字资讯, ???? tIME(档案修改时间) ???? tRNS(透明度方式): 指定是用GIF的透明显示还是用PNG新的alpha channel ???? 透明显示. ???? zTXt(压缩的文字资讯): 类似tEXt, 不过有压缩. ???? 此外CRC资讯记录在所有zlib压缩资料的尾端. PNG的特点: PNG一开使被提出的动机是因为GIF档案格式发生了一些演算法著作权的 ???? 问题,因此需要一个更有效的格式来取代GIF档.所以PNG保留了GIF的大部 ???? 分功能: ???? (1)储存256色以下的index color图档 ???? (2)交错显示:传输档案时,先传送图档中某些指定的scanline以便让观看 ??????? 者先看到一个大略的图档(JPG用的是"渐进式显示",先传送"低解析度" ??????? 的图档).请参考以下"演算法"的部份. ???? (3)透明区域:可将图档某些区域设成透明以显示不规则的图档. ???? (4)额外资讯:文字资料(如作者、出处等资讯)与其他夹杂档案均可参杂 ??????? 在图档中一起传送. ???? (5)Hardware and Platform independence: PNG被设计成可以透过网路 ??????? 传送到任何机种及作业系统上读取.(相对於某些麦金塔上的档案格式 ??????? 送到了PC上就必须手动加上副档名才能读取...) ???? (6)非破坏压缩 ???? 此外,PNG另外规划了GIF所没有的新功能: ???? (1)储存全彩影像档(24bit),最高可储存至每pixel 48bit(其中8 bit拿去 ??????? 存alpha channel, 另外8 bit留作扩充). ???? (2)储存灰阶影像(8 bit),最高可储存至每pixel 16bit(8 bit拿去存alpha ??????? channel). ???? (3)Alpha Channel: 记录"透明度"资讯,相对於GIF只有1与0(有跟没有)的透 ??????? 明资讯,PNG提供了0~255的透明资讯,让图档可以半透明显示. ???? (4)Gamma information: 记录图档的gamma值,可用於因为显示图档的周边 ??????? 设备不同而需要做的色彩校正动作. ???? (5)Detection of file corruption: 用CRC check防止传输时的档案资 ??????? 讯流失. ???? (6)更快的交错显示: 使用Adam7演算法来提供更有效的交错显示. ???? (7)扩充性: PNG容许encoder与decoder自行定义额外的chunk来记录其他 ??????? 图档资讯,并且有提供official recommend.上面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可. (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点讲一讲IDAT的生成方法,IHDR和PLTE的数据内容都沿用以上的数据内容) 问题确实是这样的,我们知道,对于大多数的图形文件来说,我们都可以将实际的图像内容映射为一个二维的颜色数组,对于上面的PNG文件,由于它用的是16色的调色板(实际是13色),因此,对于图片的映射可以如下: (调色板对照图)

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题