I have this method to compare to images that are in xhdpi but giving me this error java.lang.IllegalArgumentException: y must be < bitmap.height() here is code :
private boolean CompareImages(ImageView im1, ImageView im2){
boolean bool = false;
int check = 0, v1, v2, v3, ev1, ev2, ev3;
Bitmap bitmap1 = ((BitmapDrawable)im1.getDrawable()).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable)im2.getDrawable()).getBitmap();
for(int j = 50; j < 160; j = j + 50){
int pixel = bitmap1.getPixel(j,j);
int pixel2 = bitmap2.getPixel(j,j);
int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
v1 = (redValue + greenValue + blueValue)/3;
int redValue1 = Color.red(pixel2);
int blueValue2 = Color.blue(pixel2);
int greenValue2 = Color.green(pixel2);
ev1 = (redValue1 + greenValue2 + blueValue2)/3;
if(v1 == ev1){
bool = true;
} else{
bool = false;
}
}
return bool;
}
here logcat:
03-31 10:53:45.192: E/AndroidRuntime(807): FATAL EXCEPTION: main
03-31 11:29:33.352: E/AndroidRuntime(1574): FATAL EXCEPTION: main
03-31 11:29:33.352: E/AndroidRuntime(1574): java.lang.IllegalStateException: Could not execute method of the activity
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.view.View$1.onClick(View.java:3599)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.view.View.performClick(View.java:4204)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.view.View$PerformClick.run(View.java:17355)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.os.Handler.handleCallback(Handler.java:725)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.os.Handler.dispatchMessage(Handler.java:92)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.os.Looper.loop(Looper.java:137)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-31 11:29:33.352: E/AndroidRuntime(1574): at java.lang.reflect.Method.invokeNative(Native Method)
03-31 11:29:33.352: E/AndroidRuntime(1574): at java.lang.reflect.Method.invoke(Method.java:511)
03-31 11:29:33.352: E/AndroidRuntime(1574): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-31 11:29:33.352: E/AndroidRuntime(1574): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-31 11:29:33.352: E/AndroidRuntime(1574): at dalvik.system.NativeStart.main(Native Method)
03-31 11:29:33.352: E/AndroidRuntime(1574): Caused by: java.lang.reflect.InvocationTargetException
03-31 11:29:33.352: E/AndroidRuntime(1574): at java.lang.reflect.Method.invokeNative(Native Method)
03-31 11:29:33.352: E/AndroidRuntime(1574): at java.lang.reflect.Method.invoke(Method.java:511)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.view.View$1.onClick(View.java:3594)
03-31 11:29:33.352: E/AndroidRuntime(1574): ... 11 more
03-31 11:29:33.352: E/AndroidRuntime(1574): Caused by: java.lang.IllegalArgumentException: y must be < bitmap.height()
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.graphics.Bitmap.checkPixelAccess(Bitmap.java:1158)
03-31 11:29:33.352: E/AndroidRuntime(1574): at android.graphics.Bitmap.getPixel(Bitmap.java:1107)
03-31 11:29:33.352: E/AndroidRuntime(1574): at com.example.gusetheplace.ConductQuiz2.CompareImages(ConductQuiz2.java:794)
03-31 11:29:33.352: E/AndroidRuntime(1574): at com.example.gusetheplace.ConductQuiz2.onClick_rb4(ConductQuiz2.java:630)
03-31 11:29:33.352: E/AndroidRuntime(1574): ... 14 more
You're are iterating over int j = 50; j < 160; j = j + 50
, without checking the real size of the images.
You should use Bitmap.getHeight()
and Bitmap.getWidth()
in order to call Bitmap.getPixel(x,y)
with valid coordinates.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With