c++ - libpng 警告 : iCCP: known incorrect sRGB profile

标签 c++ warnings sdl rgb libpng

我正在尝试使用 SDL 加载 PNG 图像,但程序无法运行,并且此错误出现在控制台中

libpng warning: iCCP: known incorrect sRGB profile

为什么会出现此警告?我应该怎么做才能解决这个问题?

最佳答案

Libpng-1.6 在检查 ICC 配置文件方面比以前的版本更严格。您可以忽略警告。要摆脱它,请从 PNG 图像中删除 iCCP block 。

某些应用程序将警告视为错误;如果您正在使用这样的应用程序,则必须删除该 block 。您可以使用各种 PNG 编辑器(例如 ImageMagick 的

)中的任何一种来做到这一点
convert in.png out.png

要从文件夹(目录)中的所有 PNG 文件中删除无效的 iCCP block ,您可以使用 ImageMagick 中的 mogrify:

mogrify *.png

这要求您的 ImageMagick 是使用 libpng16 构建的。您可以通过运行轻松检查它:

convert -list format | grep PNG

如果您想找出需要修复哪些文件而不是盲目处理所有文件,您可以运行

pngcrush -n -q *.png

-n 表示不重写文件,-q 表示抑制除警告之外的大部分输出。抱歉,pngcrush 中除了警告之外没有其他选项可以抑制所有内容。


ImageMagick 的二进制版本是 here


对于 Android 项目 (Android Studio),导航到 res 文件夹。

例如:

C:\{your_project_folder}\app\src\main\res\drawable-hdpi\mogrify *.png

关于c++ - libpng 警告 : iCCP: known incorrect sRGB profile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745076/

相关文章:

iphone - '-respondsToSelector :' not found in protocol(s)

android - AdMob 广告未在 Android SDL 应用中正确显示

c++ - 我想我可以理解 N4140 中的 §5.3.4/11,但是扩展的分配函数的概念对我来说是不可理解的

c++ - 正则表达式匹配包含 : special characters, 个数字、字母的字符串中的日期

c++ - 永无止境的功能问题

string - 字符串 'eq' Perl 中的未初始化值

c++ - 分段故障运行 boost 示例

java - 如何修复 'Unchecked cast from MyClass to T'

c++ - 当使用 vector 数学将某物移动到一个点时,敌人到达那里然后消失

c++ - 功能 SDL_FreeSurface : why it crashes in this context? 的行为