解决Unity3D在编译时出现libpng iccp警告的问题

Table of Contents

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com

项目组使用Unity3D4.6进行渠道商SDK接入,在编译Android版本时,发现部分渠道商提供的SDK包在编译时会出现如下图的问题:

经查证,新版本的Unity3D采用了较高版本的libpng库作为png格式图片的处理模块,产生此问题的原因是新版本的libpng对png的ICCP采用了更严格的约束条件,因此,我们必须使用软件对渠道商提供的这些资源png图片进行处理,以解决这个问题。开源软件 ImageMagick 提供了处理这个问题的方案。

从ImageMagick网站下载了ImageMagick Display软件包,安装后如下图:

我们使用软件包中的convert.exe程序对这些图片进行处理。convert程序是一个命令行程序,该程序有很多开关参数。我们使用-strip参数处理。命令行格式为:

convert 待处理的图片的文件名 -strip 处理后输出的图片文件名

如果需要一口气处理同一文件夹下的许多png,我们可以将处理命令写成一个批处理文件,代码如下:

set fn=E:\software\ImageMagick-6.9.0-Q16\convert.exe
for /f "tokens=*" %%i in ('dir/s/b *.png') do "%fn%" "%%i" -strip "%%i"
kumakoko avatar
kumakoko
pure coder
comments powered by Disqus