png图像格式规范 第七章 把一个PNG图像编码成一个PNG数据流

第七章  把一个PNG图像编码成一个PNG的数据流

 

7.1 整数与字节序
所有的长度超过一个字节的整数都应该使用网络字节序(见图7.1所示)
最重要的字节(也就是最高位)首先传输,然后是按重要性的降序进行传输
(对于两个字节的整数是高位字节和低位字节,对于四个字节的整数是最高
位字节,b2,b1,最低位字节)。一个字节中的最高位是第7位,它值是128,
最低位是第0位,它的值是1。如果没有注明,值是无符号的。值被显式的注明
为有符号的,被表示为两种补记标识。

 

PNG的四个字节的无符号的整数的限制范围在0到2的31次幂-1.是为了容纳语言
对无符号四字节数的处理难度。相似的,PNG的四个字节的有符号整数被限制在
负的2的31次幂-1到正的2的31次幂-1之间,是为了容纳语言对负的2的31次幂
处理难度。

 

图7.1 整数的表示方法

 

 

7.2 扫描行
一个PNG图像是一个矩形的像素的数组,每行的像素是从左到右的,扫描行是从上到下的。每个像素的大小
是由每个像素的位的数量决定的。

 

一个扫描行的像素总是被打包成字节的序列,像素之间没有多余的比特位。扫描行总是开始于字节边界。
允许的位深和颜色类型被限制是为了在所有的情况下,打包是简单和高效的。

 

在PNG的图像中,颜色的类型为0(灰色)每个像素只有一个单独的采样,它可能有小于一个字节的精度
(1,2,4位)。这些采样被打包成字节,最左的采样在一个字节的高位,其它的采样紧随其后。

 

在PNG的图像中,颜色的类型为3(索引颜色)每个像素只有一个调色板的索引。这预示着索引被打包成
字节的方式,与颜色类型为0的方式是相同的。

 

当一个字节有多个像素时,一个扫描行的最后一个字节的一些低位可能没有使用。这些没有使用的位的内容
没有指定。

 

PNG图像的非索引颜色的图像可能有采样值有16位的位深度。这样的采样值以网络字节序存储和传输。
PNG允许多采样的像素仅有8位或者是16位的采样深度,所以一个像素的多个采样根本不会被打包到
一个字节中。

 

7.3  过滤
PNG允许扫描行的数据在它被压缩之前进行过滤。过滤能够提供数据的压缩率。
过滤步骤的本身让字节的结果序列与输入的序列有相同的大小,但是在一个不
同的表示,取决于执行的过滤类型。过滤没有把实际的扫描行的数据的大小减少。
所有的过滤是严格的无损的。

 

不同的过滤类型能被用于不同的扫描行,对于每个扫描行的过滤算法由过滤类型
的字节来指定。过滤类型的字节不被认为是图像数据的一部分,但是它被包括在
数据流中,发送给了压缩的步骤。一个智能的编码器能够从一个扫描行到下一个
扫描行进行过滤器的转换。选择应用哪一个过滤器的方法留给了编码器来做。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值