2013-03-30 30 views
5

tôi có phương pháp này để so sánh với hình ảnh ở xhdpi nhưng đem lại cho tôi lỗi này java.lang.IllegalArgumentException: y phải < bitmap .height() đây là mã:java.lang.IllegalArgumentException: y phải <bitmap.height()

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; 
} 

đây 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 
+0

Bạn có thể đăng đầy đủ logcat của mình không. – NullPointer

Trả lời

7

Bạn đang được lặp lại trên int j = 50; j < 160; j = j + 50, mà không kiểm tra kích thước thực sự của những hình ảnh.

Bạn nên sử dụng Bitmap.getHeight()Bitmap.getWidth() để gọi Bitmap.getPixel(x,y) với toạ độ hợp lệ.

+0

Có. Pixel hình ảnh ít hơn chỉ số trong vòng lặp – DareDevil

Các vấn đề liên quan