【发布时间】:2019-04-10 04:36:40
【问题描述】:
我想从ImageView 获取位图。我使用了以下代码,但它抛出了ArrayIndexOutOfBoundExcpetion。如何解决?
bitmap.getPixels(mImagePixels, 0, bitmap.getWidth(), 0, 0,
bitmap.getWidth(), bitmap.getHeight());
int pixel = 0;
for (int i = 0; i < DIM_IMG_SIZE_WIDTH; ++i) {
for (int j = 0; j < DIM_IMG_SIZE_HEIGHT; ++j) {
final int val = mImagePixels[pixel++];
mImgData.putFloat(convertToGreyScale(val));
}
}
}
private float convertToGreyScale(int color) {
return (((color >> 16) & 0xFF) + ((color >> 8) & 0xFF) + (color & 0xFF)) / 3.0f / 255.0f;
}
java.lang.ArrayIndexOutOfBoundsException
at android.graphics.Bitmap.checkPixelsAccess(Bitmap.java:1824)
at android.graphics.Bitmap.getPixels(Bitmap.java:1765)
at com.drprajapati.android.plantclassification.ml.Classifier.convertBitmapToByteBuffer(Classifier.java:69)
at com.drprajapati.android.plantclassification.ml.Classifier.classify(Classifier.java:53)
at com.drprajapati.android.plantclassification.MainActivity$1.onClick(MainActivity.java:58)
at android.view.View.performClick(View.java:6671)
at android.view.View.performClickInternal(View.java:6640)
at android.view.View.access$3100(View.java:791)
at android.view.View$PerformClick.run(View.java:26173)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6912)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
【问题讨论】:
-
如果您觉得方便,可以使用
BitmapFactory(developer.android.com/reference/android/graphics/BitmapFactory)
标签: android machine-learning tensorflow-lite