IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> PNG文件分析与实例 -> 正文阅读

[系统运维]PNG文件分析与实例

PNG文件分析与实例

Abstract
本文采用从理论到实践的行文思路,两大部分采用同样的结构分析PNG文件,实乃杀人放火学术科研必备好文。

概述

便携式网络图形(Portable Network Graphics,PNG),开发于20世纪90年代中期,用于替代GIF和TIFF格式,同时增加了一些GIF格式不具备的特性。支持索引、灰度、RGB三种颜色方案以及alpha通道特性,支持256色调色板技术,产生文件的体积小,最高支持24位真彩色图像和8位灰度图像,支持存在附加文本信息,以保留图像名称、作者、著作权、创作时间、注释等,支持无损压缩,适合在网络传输中快速显示预览效果后再显示全貌。

PNG文件的结构可以分为两个部分:头部和数据块序列

理论存在

头部

头部由固定的8字节识别标志组成,它们是

10进制137 80 78 71 13 10 26 10
16进制89 50 4E 47 0D 0A 1A 0A

这确保了系统与软件能识别出它是PNG文件,每一字节均有各自的含义:

字节(16进制)含义
89超出ascii字符范围,防止被当作文本文件
50 4E 47对应ascii码的"PNG"(大写)
0D 0ADOS风格的换行符,用于DOS-Unix数据的换行符转换
1A在DOS命令行下,用于阻止文件显示的文件结束符
0AUnix风格的换行符,用于Unix-DOS换行符的转换

数据块的结构

数据块由4个部分组成:

组成部分长度/bytes说明
Length4指定Chunk Data部分的长度(字节)
Chunk Type Code4指定数据块的类型(ascii字母)
Chunk Data0~231-1数据部分
CRC4循环冗余码,用于检测错误

可以分为两种类型:关键数据块和辅助数据块,其中:


关键数据块

关键数据块共4种,每个PNG文件都必须包含这四种数据块

IHDR - 文件头数据块

包含PNG文件中存储的图像数据基本信息,位于数据块序列的首位,一个PNG文件只能拥有一个IHDR。

Length字段:指定Chunk Data的长度为13字节

Chunk Type字段:

10进制73 72 68 82
16进制49 48 44 52

Chunk Data字段:

名称字节数说明
Width4图像宽度,以像素为单位
Height4图像高度,以像素为单位
Bit depth1图像位深,取值1、2、4、8、16
ColorType1颜色类型,取值0、2、3、4、6
Compression method1压缩方法,取值0,表示deflate压缩方法
Filter method1滤波器方法
Interlace method1隔行扫描方法,0表示无隔行,1表示Adam7隔行

PLTE - 调色板数据块

包含与索引彩色图像相关的彩色变换数据,仅与索引彩色图像有关,而且要放在图像数据块IDAT之前。

  • 对于Colour type 3的PNG图像(索引图像),PLTE块是必需的,此时调色板的颜色索引从0开始编号,然后是1,2……
  • 对于Colour type为2和6的图像,PLTE块是可选的,此时调色板将提供一个1—256的建议颜色集,以便软件或屏幕不支持显示真彩色时量化真彩色图像
  • Colour type为0和4的图像中不能出现PLTE块

Length字段:指定Chunk Data的长度

Chunk Type字段:

10进制80 76 84 69
16进制50 4C 54 45

Chunk Data字段:可以包含1-256个调色板信息,每个信息由3个字节组成:

颜色字节数说明
R10=黑,255=红
G10=黑,255=绿
B10=黑,255=蓝

IDAT - 图像数据块

用于存储实际的图像数据,一个PNG文件中可以包含多个连续的IDAT。

Length字段:指定Chunk Data的长度

Chunk Type字段:

10进制73 68 65 84
16进制49 44 41 54

Chunk Data字段:储存图像数据


IEND - 图像结束数据块

标志着PNG数据流的结束,位于数据流的最后一个。

Length字段:指定Chunk Data的长度为0

Chunk Type字段:

10进制73 69 78 68
16进制49 45 4E 44

Chunk Data字段为空


辅助数据块

辅助数据块类型众多,PNG文件格式规范规定了10种辅助数据块:

数据块说明
bKGD背景颜色数据块,位于PLTE之后、IDAT之前
cHRM基色和白色度数据块,位于PLTE和IDAT之前
gAMA图像γ数据块,位于PLTE和IDAT之前
hIST图像直方图数据块,位于PLTE之后、IDAT之前
pHYs物理像素尺寸数据块,在IDAT之前
sBIT样本有效位数据块,位于PLTE和IDAT之前
tEXt文本信息数据块,可以有多个
tIME图像最后修改时间数据块
tRNS图像透明数据块,位于PLTE之后、IDAT之前
zTXt压缩文本数据块,可以有多个

实践开始

选取图片文件lab2test.png如下
没有看不懂实验的意思
使用Xcode打开
lab2test.png
上文中,我们提到了:

头部

头部

关键数据块

IHDR - 文件头数据块

Length字段:指定Chunk Data的长度为13字节
ihdr-length
Chunk Type字段:

16进制49 48 44 52

ihdr-chunktype
Chunk Data字段:

名称字节数说明
Width4图像宽度,以像素为单位
Height4图像高度,以像素为单位
Bit depth1图像位深,取值1、2、4、8、16
ColorType1颜色类型,取值0、2、3、4、6
Compression method1压缩方法,取值0,表示deflate压缩方法
Filter method1滤波器方法
Interlace method1隔行扫描方法,0表示无隔行,1表示Adam7隔行

ihdr-chunkdata

PLTE - 调色板数据块

Color Tpye为6,PLTE块是可选的,测试图片中恰好没有PLTE块
plte


IDAT - 图像数据块

idat
如图,可以看出测试图片中共有189个IDAT数据块,以第一个IDAT数据块为例:
Length字段指定Chunk Data的长度
idat-length
长度为400016=1638410字节

Chunk Type字段为

16进制49 44 41 54

idat-chunktype

Chunk Data字段储存图像数据


IEND - 图像结束数据块

Length字段指定Chunk Data的长度为0
iend-length

Chunk Type字段为

16进制49 45 4E 44

iend-chunktype
Chunk Data字段为空


辅助数据块

图中包含物理像素尺寸数据块pHYs,在IDAT之前
phys

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:32:30  更:2022-04-01 00:33:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:18:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码