84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我尝试使用 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
文件夹。例如: