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

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

最佳答案

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

仅检查它们是否不同(如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,否则数字将为字节之间的差异。

10-08 18:38