作业5 PNG文件的设计思路

通过提出问题并解答的方式尝试理解png文件

1:png文件的程序结构是如何组织的?

PNG由文件头+n个png数据块(chunk)组成。文件头为位固定的字节描述,标志着此文件为png格式文件。
在n个png数据块中,n应该不小于3。png将数据块分成两类,其中png文件必须包含的数据块有四种,分别为IHDR(文件头数据块),PLTE( 调色板数据块),IDAT(图像数据块),IEND( 图像结束数据)。所有的png读写编辑软件也要支持这些数据块的读写。此外,png数据块还定义了一些可选数据块,原则上鼓励支持可选数据块。这些可选数据快包括cHRM (基色和白色点数据块),gAMA (图像γ数据块),tIME( 图像最后修改时间数据块 )等等,提供了更详细的文件信息。

包含哪些编码格式数据?这些数据储存在哪里?

储存在文件头数据块中,为Compression method 1 byte 压缩方法(LZ77派生算法)。在文件头数据块中还包含了色深,颜色类型,滤波器方法,隔行扫描方法,图像宽高等信息。

Width 4 bytes 图像宽度,以像素为单位
Height 4 bytes 图像高度,以像素为单位

Bit depth 1 byte
图像深度:
索引彩色图像:1,2,4或8
灰度图像:1,2,4,8或16
真彩色图像:8或16

ColorType 1 byte
颜色类型:
0:灰度图像, 1,2,4,8或16
2:真彩色图像,8或16
3:索引彩色图像,1,2,4或8
4:带α通道数据的灰度图像,8或16
6:带α通道数据的真彩色图像,8或16

Compression method 1 byte 压缩方法(LZ77派生算法)
Filter method 1 byte 滤波器方法
Interlace method 1 byte 隔行扫描方法:
0:非隔行扫描 1: Adam7(由Adam M. Costello开发的7
遍隔行扫描方法)

包含哪些元数据信息?

PLTE调色板数据块中可以索引彩色图像,必须放在图像数据块之前。

png为图片格式,不支持多节目,没有音频流与字幕流。

是否支持seek?有哪些辅助信息?

支持seek函数。在png图像中,图像数据块头部会说明数据块长。各种辅助数据块会提供图像γ数,基色和白色点数,样本有效位数,背景颜色,图像直方图,图像透明,物理像素尺寸,文本信息,压缩文本等辅助信息。
文本信息中包含了图像创建者的作者名称,图像描述,著作权版权声明,用于创建图像的软件,免责声明的法律免责声明,
警告警告内容的性质,用于创建映像的源设备等

是否支持直接流化?

白皮书作者提到了将png文件编码为数据流的方法,不确定是否等同为直接流化。

哪里可以找到最标准的文档资料?

png文件白皮书。
https://www.w3.org/TR/PNG/

有哪些可用工具分析格式异常和错误?

白皮书作者建议使用带有检查CRC功能的解码器进行检验,因为每个数据块都带有crc码在数据块的末尾。同时还可以检验数据块的长度与值的大小是否在规定范围内来判断是否是有效快,是否为恶意代码块。同时png格式如果发现位置代码块错误,除非是关键数据块,否则是不会报错的。
同时,作者认为合格的png解码器还要有解码png数据块中文本块信息的能力。

你可能感兴趣的:(概率论)