莱因电博

Li-e.cn

Li Internet Electronic Blog
@rss

解决Qt警告“linpng sRGB 不正确”的问题

Resolve the issue of Qt warning ‘incorrect linpng sRGB’

————————————————————

问题概述

在我们的新版嵌入式实验平台里,使用新版5.11以上的Qt在读取某些PNG格式的图片会出现关于“libpng”库读取“sRGB”不正确的问题。它的问题报错大概如下所示:

libpng warning: iCCP: known incorrect sRGB profile ...

这个错误警告的问题并不影响我们的编译和使用,但如果我们是从命令窗口中运行的Qt设计程序,在我们的命令窗口中这个错误就会随着我们的每个需要调用到png图片的执行动作的增加而增加,给我们在调试和观察应用输出时造成极大的不便。因此,HoYoLab 的小伙伴整理了这个问题的解决思路。

问题的原因

我们查询了Qt官方的说法,只是因为 libpng 比较严格而已。

解决方案

1. 使用jpeg格式的图片

这个问题其实治标不治本,我们在每次使用的时候还需要对图片增加一次转换的步骤,这会降低我们的工作效率。

此外,jpeg拥有极好的压缩效率,但对于图片而言,它的清晰度会极大降低,并不适合我们开发集成的内置图标,也不符合实际的大多数场景的应用。

所以,我们并不建议使用这个方法。

2. 将PNG成为PNG

这句话没有歧义!我们的意思是,将你所使用的PNG图片转变为真正标准的PNG格式图片。我们在参考和查询网络上的方案时,发现我们只需要使用 QImage 读取再保存即可。

为此,我们封装了一个简单的功能函数为你解决这个问题:

int png_to_png(const QString file)
{
	QImage image(file);
    if(image.isNull()){
        qDebug() << "Image error";
        return -1;
    }else{
        image.save(file, "PNG");
    }
    return 0;
}

结束。

(C) 2019 - 2024 Li-e.cn莱因电博(立网电子博客) | Powered by Vercel , based on Hugo with Gists theme.