Если вы используете API уровня 12 или выше, есть метод под названием sameAs
для Bitmap
, чтобы сделать именно то, что вы ищете.В противном случае, используйте getPixels
и сделайте что-то вроде:
int width = bitmap1.getWidth();
int height = bitmap1.getHeight();
int pixelCount = width * height;
int[] pixels1 = new int[pixelCount];
int[] pixels2 = new int[pixelCount];
bitmap1.getPixels(pixels1, 0, 0, 0, 0, width, height);
bitmap2.getPixels(pixels2, 0, 0, 0, 0, width, height);
for (int i = 0; i < pixelCount; i++) {
if (pixels1[i] != pixels2[i]) {
return false;
}
}
return true;
Или, если вы действительно хотите сделать счетчик, чтобы увидеть, сколько пикселей одинаково, продолжайте и сделайте это.
На самом деле, вы, вероятно, тоже можете что-то делать с буферами ... Может быть, что-то вроде
int width = bitmap1.getWidth();
int height = bitmap1.getHeight();
int pixelCount = width * height;
IntBuffer buffer1 = IntBuffer.allocate(pixelCount);
IntBuffer buffer2 = IntBuffer.allocate(pixelCount);
bitmap1.copyPixelsToBuffer(buffer1);
bitmap2.copyPixelsToBuffer(buffer2);
int result = buffer1.compareTo(buffer2);
Я не уверен, как эти два метода сравниваются по производительности, но это что-топоиграйте, если хотите.