2013-03-30 98 views
5

我有這樣的方法來比較是在xhdpi但給我這個錯誤 java.lang.IllegalArgumentException異常圖像:y必須是<位圖.height()這裏是代碼:java.lang.IllegalArgumentException異常:y必須是<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; 
} 

這裏的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

請問您可以發佈完整的logcat嗎? – NullPointer

回答

7

你是迭代int j = 50; j < 160; j = j + 50,不檢查的實際大小圖像。

您應該使用Bitmap.getHeight()Bitmap.getWidth()以便用有效座標調用Bitmap.getPixel(x,y)

+0

是的。圖像像素小於循環索引 – DareDevil

相關問題