c++ - Qt - 将 JPEG 转换为 PNG 不提供相同的图像

标签 c++ image qt png jpeg

我想将 jpeg 图像转换为 png 并为此使用以下代码:

  QImageReader reader;
  reader.setFileName(imagePath);

  QImage image = reader.read();

  QImageWriter writer;
  writer.setFileName(newImagePath);
  writer.write(image);

我认为输出图像与输入图像完全相同,但差异图像不为空,我不明白为什么。差异图像看起来像噪声图像,其值范围为 -5 到 6。

我尝试用另一个名为 VTK 的库做同样的事情,但我没有遇到同样的问题,压缩前后的图像完全相同。

欢迎任何建议!

最佳答案

不同的 JPEG 解码器可以产生略有不同的 RGB 值 (如果 JPEG 包含 ICC 配置文件则更是如此);涉及很多数值舍入和转换(但是,编码器与引用实现的每像素差异应该不超过一位,但我不会打赌;参见例如 this 答案和 this 一个) .

我建议你尝试在 QImage 中进行逐像素比较。

关于c++ - Qt - 将 JPEG 转换为 PNG 不提供相同的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43914667/

相关文章:

C++ 如果存在则删除

c++ - 以标志数作为参数的位域

javascript - 我可以保存我用 Javascript 编辑的图像,也许使用 PHP,以便更改是永久性的吗?

html - 固定标题和侧边栏, flex 图像区域,需要 css 帮助吗?

javascript - QML 报告 ReferenceError : XYZ is not defined on C++ object added to context

c++ - Gnuplot 和 C++ : Can't find gnuplot neither in PATH nor in "

c++ - 为什么复制赋值运算符必须返回引用/常量引用?

ios - 在 iOS 应用程序中显示图像时出现错误

c++ - QStrings 上的 AES 加密,libcrypto++

linux - QT QProcess 输出 cout