我需要将android.media.Image
转换为BitMap
,以便我可以在Google Vision Barcode API中使用它。我尝试了以下方法...
byte[] imageData = new byte[image.getPlanes()[0].getBuffer().remaining()];
Bitmap bmp = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
Frame frame = new Frame.Builder().setBitmap(bmp).build();
SparseArray<Barcode> barcodes = detector.detect(frame);
System.out.println(barcodes.valueAt(0));
。但我收到以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference.
谷歌的示例代码引用了已弃用的 Camera
API,但我正在使用camera2
这就是为什么我无法使用它们寻求帮助的原因。
解决方法是确保imageReader
格式JPEG
而不是YUV
mImageReader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 3);