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

时间:2013-08-19 12:29:06

标签: c++ qt qimage qdebug

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

3 个答案:

答案 0 :(得分:1)

如果要打印每个像素的值,则使用QImage的bits()方法获取指向unsigned char中所有像素值的指针,然后将它们打印在for循环中。例如,如果你有32位图片,那么在bits()返回的表中你将为每个像素(红色,绿色,蓝色,Alpha)提供4个值,并知道有多少个你只使用width()* height ()* 4(如果它是32位深度)。或者您可以比较每个像素而不是打印,只返回那些不同的像素。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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