关于libpng warning: iCCP: known incorrect sRGB profile的解决

先上结果

将有问题的PNG图像用QImage读取出来,将其颜色空间转换为AdobeRgb,再保存此图像。

QImage img("*.png");
img.convertToColorSpace(QColorSpace::AdobeRgb);
img.save("*.png");

问题查找

在高版本的QT中,它应该使用了较高版本的libpng库,导致QImage在加载老的PNG图片时会报libpng warning: iCCP: known incorrect sRGB profile这个错误。
在查找解决方案过程中看到有人提到将有问题的png图片用QImage读取出来,然后再保存出去的方法:

QImage img("*.png");
img.save("*.png");

但我在QT5.15以及QT6中测试发现此方法无用,还是会报同样的错误,并且在save时还会出现一个新的错误libpng warning: profile matches sRGB but writing iCCP instead

另外一种解决方法是用其他工具(例如PS)来处理图像,但是我不想去下载PS这种大型软件,而且还不满足我批量转换的需求。但是它的转换方式却对我有所警示:
在这里插入图片描述
Adobe RGB(1998)这个提示我在QT中找到了对应的工具,在QColorSpace的中刚好有对应的枚举:
在这里插入图片描述
至此我尝试将QImage初始sRGB颜色空间转换为AdobeRgb,发现可以去除此警告。

最后

上面我所采用的解决方案是否完全正确我并不清楚,只是它的结果是警告确实消除了,并且转换后的图像也可以正常使用。有兴趣可以继续深入查找解决方案,如果有懂相关知识的同学欢迎指出问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值