如何打印QImage的所有原始数据,以便在内存中进行比较

How to print all the raw data of QImage for comparisons in the memory?

本文关键字:内存 比较 原始数据 何打印 打印 QImage      更新时间:2023-10-16

我有两个QImage对象,它们应该相等,但QImage::operator==的结果是false。所以我想打印这两个对象的所有原始数据进行比较。如何做到这一点?可以用qDebug()完成吗?

我建议您编写一个函数来逐字节比较这两个图像,并返回它们不同的偏移量。

手动比较图像数据通常是乏味的,并且可能导致错误。

如果您想打印每个像素的值,那么使用QImages的bits()方法获取指向无符号字符中所有像素值的指针,并将它们打印出来进行循环。例如,如果你有32位的图片,那么在bits()返回的表中,每个像素有4个值(红、绿、蓝、阿尔法),要知道其中有多少个,你只需要使用width()*height()*4(如果是32位深度)。或者,您可以比较每个像素,而不是打印,只返回不同的像素。

使用qDebug() << QImage()将打印出类似QImage(QSize(0, 0) )的内容。

可以使用const uchar * QImage::constBits()函数获取指向第一个像素数据的指针,然后遍历像素数据,打印值。