移动端Camera编解码

PNG、JPEG、BMP等几种图片格式详解(一)—— PNG

2017-09-06  本文已影响1664人  刀客传奇

版本记录

版本号 时间
V1.0 2017.09.05

前言

只要是做图片的或者与图片相关的,那么图片的格式就是一个不可以绕过的问题,我们见过很多的图片格式,但是具体不同的图片格式是如何定义的,又具有什么特点,很多时候我们都没有深入研究过,下面我们就开始深入研究。

几种图片格式

图片有很多的格式,包括PNGJPEGJPGBMP等,下面我们就详细的说一下这几张图片的格式,并进行详细的对比。


PNG

便携式网络图形(Portable Network Graphics)是一种无损压缩的位图图形格式 。其设计目的是试图替代GIFTIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG的名称来源于“可移植网络图形格式(Portable Network Graphic Format,PNG)”,也有一个非官方解释“PNG's Not GIF”。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。

1. 特点

PNG格式的图片具有如下特点:

2. 文件结构

PNG图像格式文件(或者称为数据流)由一个8字节的PNG文件署名(PNG file signature)域和按照特定结构组织的3个以上的数据块(chunk)组成。

文件署名域

8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:

数据块类型码命名约定

3. 数据块结构

PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是必需的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。虽然PNG文件规范没有要求PNG编译码器对可选数据块进行编码和译码,但规范提倡支持可选数据块。

数据块的4个域组成如下图所示。

下面我们就分析下这个结构。

关键数据块

关键数据块的组成如下所示。

辅助数据块

看下面这个数据结构图。

4. 几种PNG格式

PNG格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基础上增加了8位透明通道,因此可展现256级透明程度。
PNG8和PNG24后面的数字则是代表这种PNG格式最多可以索引和存储的颜色值。”8″代表2的8次方也就是256色,而24则代表2的24次方大概有1600多万色。

具体如下图所示。

5. 与GIF比较

参考文章

1. PNG,JPEG,BMP,JIF图片格式详解及其对比
2. PNG

后记

未完,待续~~~

上一篇下一篇

猜你喜欢

热点阅读