使用png图像常见的一个警告

libpng warning: iCCP: known incorrect sRGB profile

原因

  新版本(libpng-1.6)在检查ICC配置文件(主要用于色彩校正)方面更加严格。您可以忽略该警告,但有些应用程序会将该警告处理为错误。

解决方法

  删除PNG图像中iCCP块。为大家提供以下两种方法。

  1. Unix系统下可以使用convert工具转换

    1
    convert in.png out.png
  2. 可以使用Qt库实现来转换

    1
    2
    3
    QPixmap pixmap;
    pixmap.load("in.png");
    pixmap.save("out.png", "PNG");

关于更多

  • ICCP:iCCP嵌入式ICC配置文件。
    • 在PLTE和IDAT之前。如果存在iCCP块,则不应该存在sRGB块
    • 另外,PNG数据流最多应包含一个嵌入式配置文件,无论是使用iCCP块显式指定还是使用sRGB块隐式指定。
  • ICC配置文件:颜色空间的描述(以国际颜色联盟(ICC)的形式)。
  • sRGB:标准RGB颜色空间(一个图像样本符合这个颜色空间的指示)。
  • ref:https://www.w3.org/TR/2003/PR-PNG-20030520/#11iCCP