标签:
在Android Studio 1.2.2下编译期间,出现了下面警告信息:‘
...\res\drawable-hdpi\add_green.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
本文先学习下PNG文件格式,然后了解下libpng, 再来分析和解决这个警告信息。
[2]是WWW PNG的规范,[3]是通过例子来介绍PNG文件格式中文编写,下面材料主要来自于这两份文档。
每个PNG文件是由一个PNG标识(signature),后面跟一些数据块(Chunk)组成,每个chunk有一个chunk类型来标识其功能。
每个PNG文件的前8个字节总是包含以下值:
十进制 137 80 78 71 13 10 26 10 十六进制 89 50 4E 47 0D 0A 1A 0A
第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。
在png规范[2]中总计定义了18种chunk,其中4类chunk是关键数据块(critical chunk),每个PNG文件都必须包含它们,其余14类为辅助数据块(ancillary chunks),这是可选的数据块。
IHDR: image header, 在PNG文件中位置为第一块chunk。
PLTE: 调色板(palette table), 位于IDAT块之前
IDAT: 图像数据块, 可以有多个连续的IDAT块
IEND: image trailer, 在PNG文件中位置为最后一块chunk.
14类辅助chunk可以归类为以下几种:
a. Transparency information(透明信息)
tRNS(Transparency-透明)
b. Colour space information(颜色空间信息)
cHRM(Primary chromaticities and white point:基色与白色点)
gAMA(Image gamma:图像gamma)
iCCP(Embedded ICC profile:嵌入式ICC profile)
sBIT(Significant bits:样本有效位)
sRGB(Standard RGB colour space:标准RGB颜色空间)
c. Textual information(文本信息)
iTXt(International textual data: 国际文本数据)
tEXt(Textual data:文本数据)
zTXt(Compressed textual data: 压缩文本数据)
d. Miscellaneous information(其他信息)
bKGD(Background colour:背景颜色)
hIST(Image histogram:图像直方图)
pHYs(Physical pixel dimensions:物理像素尺寸)
sPLT(Suggested palette:建议调色)
e. Time information(时间信息)
tIME(Image last-modification time: 图像最后修改时间)
每一块chunk由3个或4个字段组成。
Length (长度) 4字节 指定chunk中data字段的长度,可以为0, 不超过(2^31-1)字节
Chunk Type(数据块类型) 4字节 数据块类型由ASCII字母(A-Z和a-z)组成,
每个字节的bit 5表示chunk属性, 可参见[2]中5.4 Chunk naming conventions
Chunk Data (数据块数据) 可变长度 存储按照Chunk Type Code指定的数据
CRC (循环冗余检测) 4字节 存储用来检测是否有错误的循环冗余码
[2]中5.6 Chunk ordering描述了每一类chunk在PNG文件中的顺序。
IEND chunk中没有data字段,因此Length字段为0, IEND chunk为以下12个字节(十六进制):
00 00 00 00 49 45 4E 44 AE 42 60 82
前4个字节为00 00 00 00,Type总是IEND(49 45 4E 44),因此,CRC码也总是AE 42 60 82,每个PNG文件最后12字节都是相同的。
待续。
待续。
[1] Libpng 1.6.17 - March 26, 2015, http://www.libpng.org/pub/png/src/libpng-1.6.17-README.txt
[2] Portable Network Graphics (PNG) Specification (Second Edition), http://www.w3.org/TR/2003/PR-PNG-20030520/
[3] PNG文件结构分析:http://wenku.baidu.com/view/b87e978583d049649b66586a.html?re=view
AS问题解决系列3—iCCP: Not recognizing known sRGB profile
标签:
原文地址:http://my.oschina.net/1pei/blog/479162