AAPT err libpng warning: iCCP: Not recognizing known sRGB profile that has been edited

April 21, 2016

Android

在使用 Android Studio 开发应用的时候,经常在编译的时候看见以下的 error log:

AAPT err(1728717418): xxx.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited

这个问题主要是因为在项目中,使用了一些不是很规范的 png 图片。美术在提供 png 图片的时候,可能跟他们使用的 PhotoShop 工具有关,在生成 png 图片的时候,在文件的头部加入了一些特殊的元数据(invalid metadata)。

名词解释

iCC:International Color Consortium https://en.wikipedia.org/wiki/International_Color_Consortium
ICCP 就是 iCC profile。
每个 png 图片中都有一个 iCCP 的 chunk。

解决办法

可以借助一些工具来处理这种问题。pngcrush 和 optipng 工具来进行优化。

pngcrush -ow -rem allb -brute -reduce image.png
optipng -o7 image.png

在 linux 系统上,可以通过脚本来批处理:

#!/bin/sh

for i in `find . -name "*.png"`; do
    pngcrush -ow -rem allb -brute -reduce $i
    optipng -o7 $i
done

在 Windows 上,

@echo off
set /p UserInputPath= What Directory would you like?
cd %UserInputPath%
for /r %%i in (*.png) do ( pngcrush -ow -rem allb -brute -reduce "%%i" & optipng -o7 "%%i" )

工具的地址:

参考文档:

http://stackoverflow.com/questions/32882958/android-studio-libpng-warning-iccp-not-recognizing-known-srgb-profile-that-h

http://www.libpng.org/pub/png/

--- EOF ---

添加新评论