仅通过二进制大小检测图像变化

Detecting image change by its binary size only

更改单个像素会影响图像文件的二进制大小。我很好奇比较两张照片的二进制大小是否足以检测到变化!会不会有假阳性结果?这个解决方案有多可靠?

我比较的图像是 'PNG' 格式,它们是同一来源的快照,因此质量和尺寸相同,但像素可能不同。

我知道像 pixelmatchimg-diff-js 这样的库,但它们对我来说太慢了,我不需要大量的差异发现; true/false 就足够了。

假设由同一系统获取和压缩的 PNG 文件,大多数文件的大小将大致相同。一个小的变化可能会导致包含的图像变长或变短一个字节,但是会有很多很多不同的图像具有完全相同的文件大小。

但是要找到相同的图片不需要解压PNG文件,相同图片的压缩数据是相同的,不同图片的压缩数据是不同的。此外,只需逐字节比较文件,就会告诉您它们是否包含相同的图像。

但是,这仅适用于相同的图像。如果我们谈论的是产生图像流的相机,而您想知道场景中是否发生了某些变化,那么您仍然需要比较解压缩后的图像。这是因为数据中会包含噪声,而噪声会导致压缩后的文件不完全相同。而且您无法从压缩文件中判断更改是由于噪音还是更重要的更改。在这种情况下,您将不得不解压缩图像,并以一定的公差进行比较。