2013-08-22 3 views
0

Я использую следующий код, чтобы получить пиксель путем подачи растровогоскрытый массив пикселей с изображения окрашивать сравнить

public int[] foo(Bitmap bitmapFoo) { 
    int[] pixels; 
    // Bitmap bitmapFoo ;    
    int height = bitmapFoo.getHeight(); 
    int width = bitmapFoo.getWidth(); 

    pixels = new int[height * width]; 

    bitmapFoo.getPixels(pixels, 0, width, 1, 1, width - 1, height - 1); 
    return pixels; 

} 

теперь не могу сравнить его с подобным же образом ??

      int[] i = foo(img2); 
       int[] i2 = foo(img1); 

       if (i==i2) { 

        txt.setText("same"); 
       }else{ 


        txt.setText("different"); 
       } 

Даже если изображение похоже не одинаково, оно все еще показывает разные. Как его избежать?

Является ли сравнение правильным? или я делаю что-то не так?

+0

Какой результат, если вы используете одно и то же изображение для 'i' и' i2'? Кроме того, используйте 'if (Arrays.equals (i, i2)) {...}'. – Vikram

+0

Привет, Vikram.Is подход правильный до сих пор ?? Попытка вашего предложения. –

+0

Все еще получаю разные. Я полагаю, чтобы получить разницу и проверить процентный матч или что-то? –

ответ

0

Я считаю, что проблема в том, что вы сравниваете объекты. Когда вы создаете два объекта независимо друг от друга, они не равны.

Если у вас есть i.equals(i2), он должен работать должным образом.

.equals сравнивает значения, а не тестирование, чтобы увидеть, если объекты на самом деле тот же объект

EDIT: Я забыл, что вы, возможно, придется переопределить .equals для достижения желаемого результата. Этот вопрос может вам помочь. Why do we have to override the equals() method in Java?

+0

Я попробовал тоже, но его все-таки разные, если (i.equals (i2)) { \t \t \t \t \t \t \t \t \t \t t.setText ("же"); \t \t \t \t} еще { \t \t \t \t \t \t \t \t \t \t t.setText ("другое"); \t \t \t \t} –

 Смежные вопросы

  • Нет связанных вопросов^_^