PNG文件格式
(一)概述
PNG(可移植网络图形),是一种可扩展的文件格式,用于光栅图像的无损、可移植、压缩良好的存储。PNG是一种无损压缩的位图图形格式。其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG的名称来源于“可移植网络图形格式(Portable Network Graphic Format,PNG)”,也有一个非官方解释“PNG's Not GIF”。PNG使用从LZ77派生的无损数据压缩算法,由于其它压缩比高,生成文件体积小,一般应用于JAVA程序、网页或S60程序中[1]。
PNG设计用于在线查看应用程序, 例如万维网,因此它可以通过渐进式显示选项完全流式传输。PNG 非常强大,既能提供完整的文件完整性检查,又能对常见传输错误进行简单检测。此外,PNG 还可以存储伽玛和色度数据,以改善异构平台上的颜色匹配[2]。
(二)PNG文件结构
PNG图像格式文件(或者称为数据流)由一个8字节的PNG文件署名(PNG file signature)域和按照特定结构组织的3个以上的数据块(chunk)组成[1]。
1、文件署名域
PNG文件前八个字节始终包含以下值:
前两个字节在期望前两个字节唯一标识文件的系统上区分文件。字节二到四(与前两个有意重叠)命名格式。CR-LF 序列捕获更改这些字符的错误文件传输。 control-Z 字符在 MSDOS 下停止文件显示。 最后的换行检查 CR-LF 转换问题的逆[2]。
2、数据块
PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是必需的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块[1]。