2

我正在为 android 编写一个小型应用程序,我需要在两张图片之间进行比较。图片表示为两字节数组。

有没有算法可以比较它们?我需要检查它们之间所做的更改。

4

1 回答 1

2

这取决于您是只想标记它们不同,还是记录它们之间的每个差异。

仅仅检查它们是否不同(正如 Hunter McMillen 指出的那样) - http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

boolean different = Arrays.equals(byteArray1, byteArray2);

要存储个体差异(假设您的图片大小相同):

byte[] differenceArray = new byte[byteArray1.length];
for (int i = 0; i < byteArray1.length; i++) {
    differenceArray[i] = (byte) (byteArray1[i] - byteArray2[i]);
}

编辑:

如果您想要字节数组的二维(例如 800x600),您可以这样做:

byte[][] differenceArray = new byte[byteArray1.length][byteArray1[0].length];
for (int x = 0; x < byteArray1.length; x++) {
    for (int y = 0; y < byteArray1[0].length; y++) {
        differenceArray[x][y] = (byte) (byteArray1[x][y] - byteArray2[x][y]);
    }
}

如果两个图像之间没有差异,则差异数组将全为 0,否则数字将是字节之间的差异。

于 2012-08-04T14:49:11.377 回答