AS问题解决系列3—iCCP: Not recognizing known sRGB profile
http://my.oschina.net/1pei/blog/479162
4.6 问题解决
明确了linpng严格检查的版本以及检查的内容后,那么如何来解决该问题呢。
4.6.1 解决方案1: 删除png图片内嵌的iCCP profile sRGB
[13, 16, 17]中有一些答案建议通过Image Magick/mogrify/GIMP/exiftool等工具来"convert"或"mogrify"图片,删除png图片中内嵌的iCCP profile sRGB:
Image Magick使用举例:
删除单个png文件内的profile: % convert -strip <input filename> <output filename>
批量删除所有png文件内的profile sRGB:
set fn=E:\Program Files\ImageMagick-6.9.0-Q16\convert.exe
for /f "tokens=*" %%i in ('dir/s/b *.png') do "%fn%" "%%i" -strip "%%i"
mogrify使用举例:
删除单个png文件内的profile sRGB: mogrify +profile sRGB <png file>
批量删除所有png文件内的profile sRGB:
find <path to res folder> -name *.png -exec mogrify +profile sRGB {} \;
GIMP使用举例:
删除内嵌profile, 可先进入Image > Mode > Assign Color Profile并设置为RGB workspace(sRGB built-in), 然后File > Overwrite add_green.png覆盖原来的png文件。
修改内嵌profile, 可进入Image > Mode > Convert to Color Profile, 可选择一种profile。
在[17]也还提到:libpng 1.6+更严格的检查会对original HP/MS sRGB profile报警。老的profile使用D50 whitepoint, 而D65才是标准。这种profile由Adobe Photoshop使用, 虽然缺省在png图片中并不嵌入该profile。最简单的方法是从图片中删除内嵌的profile,但这会导致颜色有稍许偏差(当有颜色校正系统时)。但如果不希望颜色有偏差(例如用于打印输出), 可以嵌入另一种不同的颜色profile。
[13]中也有网友指出:这样删除png图片中的iCCP profile sRGB, 将丢失如何来render图片等信息,png中的色彩可能被改变。
4.6.2 解决方案2: 将aRGB转换为sRGB
[14]中有网友提到:这个图片是sRGB的改成ARGB(Adobe RGB)的就可以啦,在Android Studio中的右上角会显示24位而ARGB的图片显示是32位,但我本地报这种警告的png图片除了有32位以外还有24位的,因此这个方案不太可行。
综合上面的意见,[17]中给出的结论比较令人信服,利用GIMP工具删除内嵌的profile后问题解决。
mipmap 目录和drawable 目录有什么区别
我简单总结一下:
使用上没有任何区别,你把它当drawable用就好了。
但是用mipmap系统会在缩放上提供一定的性能优化。
但是 放入mipMap 的图片 如果出现
iCCP: Not recognizing known sRGB profile
布局文件里面,图片ID会找不到,
因此 使用PhotoShop 生成PNG图片的时候 要注意