使用png影像常見的一個警告

  • 2019 年 10 月 8 日
  • 筆記

libpng warning: iCCP: known incorrect sRGB profile

原因

新版本(libpng-1.6)在檢查ICC配置文件(主要用於色彩校正)方面更加嚴格。您可以忽略該警告,但有些應用程式會將該警告處理為錯誤。

解決方法

刪除PNG影像中iCCP塊。為大家提供以下兩種方法。

  1. Unix系統下可以使用convert工具轉換
convert in.png out.png  
  1. 可以使用Qt庫實現來轉換
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