文档似乎含糊不清。如果图像内容的每个像素相同,即使图像具有不同的编码,它们是否意味着它返回true?当他们说'#34;不同的格式" - 如果格式不同但宽度/高度相同,且像素具有相同的ARGB值会怎么样?
bool QImage :: operator ==(const QImage& image)const
如果此图像与给定图像具有相同内容,则返回true; 否则返回false。比较可能很慢,除非有 在这种情况下,一些明显的差异(例如,不同的大小或格式) 该功能将快速返回。
答案 0 :(得分:1)
它们意味着检查的第一件事是大小和格式,如果它们不同,函数会立即返回false
,因为很明显图像是不同的 - 这就是函数的原因将会快速返回,因为不会比较像素,这就是占用时间最多的像素比较。很明显,尺寸OR格式必须不同才能使功能快速返回。 (即立即知道图像不同)。
除了格式之外,两个图像具有相同的ARGB值是不可能的,因为它是定义像素值的格式 - 许多格式不具有'甲'通道,一些格式反转通道的顺序(例如RGBA);有些格式根本没有任何接近ARGB的格式(例如Format_Mono)。看看文档中的enum QImage::Format
,您就会明白这一点。
具有不同格式的图片具有不同的内存大小和完全不同的像素值,您甚至无法以任何方式进行比较(因为没有标准的方法来比较例如24位像素和16位像素,即使它们都是RGB);它们也看起来不一样 - 这就是为什么人们发明了这么多不同的格式以满足不同的需求。格式定义了像素具有特定值的含义,因此它也决定了外观。
所以,简要总结一下:如果两个图像的尺寸或格式不同,你可以在这个阶段说这些图像不具有相同的内容,所以它是否足以让==运算符返回false。