分析PNB文件格式:数据压缩试验

分析PNB文件格式:数据压缩试验

PNG文件说明

PNG文件结构

PNG,图像文件存储格式,其目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。可移植网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的"PNG’s Not GIF",是一种位图文件(bitmap file)存储格式,读成"ping"。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序中,或网页或S60程序中是因为它压缩比高,生成文件容量小。
PNG图片

PNG特性

体积小 网络通讯中因受带宽制约,在保证图片清晰、逼真的前提下,网页中不可能大范围的使用文件较大的bmp、jpg格式文件。

无损压缩 PNG文件采用LZ77算法的派生算法进行压缩,其结果是获得高的压缩比,不损失数据。它利用特殊的编码方法标记重复出现的数据,因而对图像的颜色没有影响,也不可能产生颜色的损失,这样就可以重复保存而不降低图像质量。

索引彩色模式 PNG-8格式与GIF图像类似,同样采用8位调色板将RGB彩色图像转换为索引彩色图像。图像中保存的不再是各个像素的彩色信息,而是从图像中挑选出来的具有代表性的颜色编号,每一编号对应一种颜色,图像的数据量也因此减少,这对彩色图像的传播非常有利。

更优化的网络传输显示 PNG图像在浏览器上采用流式浏览,即使经过交错处理的图像会在完全下载之前提供浏览者一个基本的图像内容,然后再逐渐清晰起来。它允许连续读出和写入图像数据,这个特性很适合于在通信过程中显示和生成图像。

支持透明效果 PNG可以为原图像定义256个透明层次,使得彩色图像的边缘能与任何背景平滑地融合,从而彻底地消除锯齿边缘。这种功能是GIF和JPEG没有的。

PNG同时还支持真彩和灰度级图像的Alpha通道透明度。

分析PNG文件的结构

这是我选的PNG图片我的int
因为小图可以更有效的看出数据的结构,所以我用画图裁剪了一下。
下面分析PNG文件的结构,采用FlexHEX打开内部数据,窗口如下图,首先需要说明数据流中以文件署名域打头,即用8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:
十进制数137 80 78 71 13 10 26 10
十六进制数 89 50 4e 47 0d 0a 1a 0a
如图所示

然后是数据块结构:
PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是必需的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块。这个我举例说明:如图所示
从这个00 00 00 0D开始,这四位是说明数据域的长度是13字节,然后后面的49 48 44 52说明他是一个IHDR头数据块,这两个用去了八个字节,后面跟着13字节的数据域其中这个开始的00 00 00 25说明这个图片宽是25,然后这个00 00 00 16说明他的高是16,然后这个08说明24位颜色深度,然后这个06说明这个是带α通道数据的真彩色图像,8或16,然后这个00是使用压缩,然后00是滤波器方法,通常为0,然后这个00是非隔行扫描的意思到这里这个数据域就结束了,之后的四位47 70 55 00是CRC校验码,之后的0021-002D:可选数据块 sRGB
002E-003D:可选数据块 gAMA(图像γ数据块)
之后从003E开始为压缩的数据即从05开始就是图片压缩的数据。
这样我们可以看

之后我们可以找到IDAT数据块在这里如图:
如图所示
IDAT数据块由这个49 44 41 54组成
如图所示
从后向前看,这个00 00 00 00 49 45 4e 44 ae 42 60 82 这个标识是png文件结束了的意思,再之前的四位表示这个CRC校验码就是AD 0F 62 66这四位,之前的是压缩的数据。
之后我们看看辅助数据块都有什么
如图所示
我们可以看到我的图中在这里:
如图所示
可以看到可选数据块PHYs。
以上就是我对PNG图片的分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值