我尝试使用 SDL 加载 PNG 图像,但程序无法运行,并且控制台中出现此错误
libpng 警告:iCCP:已知不正确的 sRGB 配置文件
为什么会出现这个警告?我应该怎么做才能解决这个问题?
使用pngcrush从png文件中删除不正确的sRGB配置文件:
pngcrush
pngcrush -ow -rem allb -reduce file.png
-ow
-rem allb
-reduce
在控制台输出中,您应该看到Removed the sRGB chunk,以及可能更多有关块删除的消息。您最终将得到一个更小、优化的 PNG 文件。由于该命令将覆盖原始文件,因此请确保创建备份或使用版本控制。
Removed the sRGB chunk
某些应用程序将警告视为错误;如果您正在使用此类应用程序,则必须删除该块。您可以使用任何种类的 PNG 编辑器来完成此操作,例如 ImageMagick。
使用Windows CMD提示,您需要cd(更改目录)到包含您要关注的图像的文件夹,然后才能使用下面列出的命令.
cd
Libpng-1.6对于ICC配置文件的检查比以前的版本更加严格;您可以忽略该警告。要摆脱它,请从 PNG 图像中删除 iCCP 块。
convert in.png out.png
要从文件夹(目录)中的所有 PNG 文件中删除无效的 iCCP 块,您可以使用 ImageMagick 中的 mogrify:
mogrify
mogrify *.png
这要求您的 ImageMagick 是使用 libpng16 构建的。您可以通过运行轻松检查它:
convert -list format | grep PNG
如果您想找出哪些文件需要修复,而不是盲目地处理所有文件,您可以运行
pngcrush -n -q *.png
其中 -n 表示不重写文件,-q 表示抑制除警告之外的大部分输出。抱歉,pngcrush 中还没有选项可以抑制除警告之外的所有内容。
-n
-q
注意:您必须安装pngcrush。
ImageMagick 的二进制版本位于此处
对于 Android 项目 (Android Studio),导航到 res 文件夹。
res
例如:
C:\{your_project_folder}\app\src\main\res\drawable-hdpi\mogrify *.png
使用
pngcrush
从png文件中删除不正确的sRGB配置文件:-ow
将覆盖输入文件-rem allb
将删除除 tRNS 和 gAMA 之外的所有辅助块-reduce
进行无损颜色类型或位深度缩减在控制台输出中,您应该看到
Removed the sRGB chunk
,以及可能更多有关块删除的消息。您最终将得到一个更小、优化的 PNG 文件。由于该命令将覆盖原始文件,因此请确保创建备份或使用版本控制。某些应用程序将警告视为错误;如果您正在使用此类应用程序,则必须删除该块。您可以使用任何种类的 PNG 编辑器来完成此操作,例如 ImageMagick。
使用Windows CMD提示,您需要
cd
(更改目录)到包含您要关注的图像的文件夹,然后才能使用下面列出的命令.Libpng-1.6对于ICC配置文件的检查比以前的版本更加严格;您可以忽略该警告。要摆脱它,请从 PNG 图像中删除 iCCP 块。
要从文件夹(目录)中的所有 PNG 文件中删除无效的 iCCP 块,您可以使用 ImageMagick 中的
mogrify
:这要求您的 ImageMagick 是使用 libpng16 构建的。您可以通过运行轻松检查它:
如果您想找出哪些文件需要修复,而不是盲目地处理所有文件,您可以运行
其中
-n
表示不重写文件,-q
表示抑制除警告之外的大部分输出。抱歉,pngcrush 中还没有选项可以抑制除警告之外的所有内容。注意:您必须安装pngcrush。
ImageMagick 的二进制版本位于此处
对于 Android 项目 (Android Studio),导航到
res
文件夹。例如: