PNG
上图为一张带8位透明通道的PNG图像,下图为被置于透明呈现棋盘的同一图像 |
|
| 扩展名 | .png |
|---|---|
| 互联网媒体类型 | image/png |
| 类型代码 | PNGfPNG |
| 统一类型标识 | public.png |
| 開發者 | W3C |
| 最初版本 | 1996年10月1日 |
| 格式 | 无损位图图像文件格式 |
| 延伸至 | APNG、JNG和MNG |
| 标准 | ISO 15948, IETF RFC 2083 |
| 自由檔案格式? | Yes |
便携式网络图形(Portable Network Graphics,PNG)是一种无损压缩的位图图形格式,支持索引、灰度、RGB[A]三种颜色方案以及Alpha通道等特性。PNG的开发目标是改善并取代GIF作为适合网络传输的格式而不需专利许可,所以被广泛应用于互联网及其他方面上。
PNG另一个非正式的名称来源为递归缩写:“PNG is Not GIF”。
目录 |
[编辑] 特性
- 支持256色调色板技术以产生小体积文件
- 最高支持48位真彩色图像以及16位灰度图像。
- 支持Alpha通道的透明/半透明特性。
- 支持图像亮度的Gamma校准信息。
- 支持存储附加文本信息,以保留图像名称、作者、版权、创作时间、注释等信息。
- 使用无损压缩。
- 渐近显示和流式读写,适合在网络传输中快速显示预览效果后再展示全貌。
- 使用CRC防止文件出错。
- 最新的PNG标准允许在一个文件内存储多幅图像。
[编辑] 版本及历史
1995年早期,Unisys公司根据它在GIF格式中使用的LZW数据压缩算法的软件专利(美国 第4558302号)开始商业收费。为避免专利影响,用于表现单张图像的PNG、用于表现动画的MNG图形文件格式被同时创建出来。1999年8月,Unisys公司进一步中止了对自由软件和非商用软件开发者的GIF专利免费许可,从而使PNG格式获得了更多的关注。
在PNG传播过程中,很多网络浏览器经过很长时间才开始完全支持PNG格式;如Microsoft Windows預設的Internet Explorer浏览器一直到7.0版才支持PNG格式中的半透明效果,較早期的版本(如6.0 SP1)需要下載Hotfix [1] 或由網站提供額外的Script去支援。[2] 这造成PNG格式并没有得到广泛的认知。
- PNG的1.0版本规范于1996年7月1日发布,后来被称为RFC 2083标准,并在1996年10月1日成为W3C建议。
- PNG的1.1版本进行了部分小幅修改并增加了三个新的数据块定义,于1998年12月31日发布。
- PNG的1.2版本增加了另外一个数据块,于1999年8月11日发布。
- PNG现行版本是国际标准(ISO/IEC 15948:2003),并在2003年11月10日作为W3C建议发布。这个版本与1.2版仅有细微差别。
此外也产生了基于PNG的动画格式:1996年6月提出PNF(Portable Network Frame)草案,当年8月改名为MNG(Multiple-image Network Graphics)。[1]
2004年末,PNG的动画扩展——APNG,被提出来。这是一个相对于MNG更简单的动画实现方案,不识别APNG格式的PNG解码器至少能够正常回放第一幅普通PNG画面。[2]
[编辑] 文件结构
PNG图像格式文件由一个8字节的PNG文件标识(file signature)域和3个以上的后续数据块(chunk)组成。
PNG文件包括8字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别PNG格式。
| 十六进制 | 含义 |
|---|---|
| 89 | 用于检测传输系统是否支持8位的字符编码(8 bit data),用以减少将文本文件被错误的识别成PNG文件的机会,反之亦然。 |
| 50 4E 47 | PNG每个字母对应的ASCII,让用户可以使用文本编辑器查看时,识别出是PNG文件。 |
| 0D 0A | DOS风格的换行符(CRLF)。 用于DOS-Unix数据的换行符转换。 |
| 1A | 在DOS命令行下,用于阻止文件显示的文件结束符。 |
| 0A | Unix风格的换行符(LF)。 用于Unix-DOS换行符的转换。 |
PNG定义了两种类型的数据块:一种是PNG文件必须包含、读写软件也都必须要支持的关键块(critical chunk);另一种叫做辅助块(ancillary chunks),PNG允许软件忽略它不认识的附加块。这种基于数据块的设计,允许PNG格式在扩展时仍能保持与旧版本兼容。
关键数据块中有4个标准数据块:
- 文件头数据块IHDR(header chunk):包含有图像基本信息,作为第一个数据块出现并只出现一次。
- 调色板数据块PLTE(palette chunk):必须放在图像数据块之前。
- 图像数据块IDAT(image data chunk):存储实际图像数据。PNG数据允许包含多个连续的图像数据块。
- 图像结束数据IEND(image trailer chunk):放在文件尾部,表示PNG数据流结束。
[编辑] PNG/JPG/GIF对比
PNG使用了从LZ77派生的一个非专利無失真式壓縮算法(名为DEFLATE)。这个算法对图像裡的直线进行预测然后存储颜色差值,这使得PNG经常能获得比原始图像甚至比GIF更大的压缩率。但也有一些软件不能使用适合的预测,而造成过分臃肿的PNG文件。 PNG8除了不支持动画以外,调色板PNG拥有GIF所有优点,此外它还支持alpha透明,并且压缩比更高,同样质量的图片PNG8与GIF相比最高节省约30%的体积。
[编辑] 注釋
- ^ Microsoft技術支援服務 - You cannot view some PNG images in Internet Explorer 6,於2009年6月1日查閱。
- ^ The PNG problem in Windows Internet Explorer,於2009年6月1日查閱。
[编辑] 外部链接
|
||||||||||||||||||||||||||||||||||||||||||||||