Я должен сохранить android.media.Image как растровые изображения и в конечном итоге сжать в формате JPEG. Сохраненные изображения - половина изображения и половина серого. Также изображения поворачиваются.
#
изображение= frame.acquireCameraImage ();
Log.i("Bitmap", "-60");
Image.Plane[] planes = image.getPlanes();
Log.i("Bitmap", "-6");
ByteBuffer buffer = planes[0].getBuffer();
ByteBuffer buffer1 = planes[1].getBuffer();
Log.i("Bitmap", "-15");
ByteBuffer buffer2 = planes[2].getBuffer();
Log.i("Bitmap", "-7");
int format = image.getFormat();
int width = image.getWidth();
int height = image.getHeight();
Log.i("Bitmap", "-20");
Rect cropRect = new Rect(0, 0, width, height);
Log.i("Bitmap", "-8");
byte[] arr = new byte[buffer.remaining()];
buffer.get(arr);
Log.i("Bitmap", "-9");
byte[] arr1 = new byte[buffer1.remaining()];
buffer1.get(arr1);
Log.i("Bitmap", "-10");
byte[] arr2 = new byte[buffer2.remaining()];
buffer2.get(arr2);
image.close();
Log.i("Bitmap", "-5");
byte[] c = new byte[arr.length + arr1.length + arr2.length];
Log.i("Bitmap", "-1");
System.arraycopy(arr, 0, c, 0, arr.length);
Log.i("Bitmap", "-2");
System.arraycopy(arr1, 0, c, arr.length, arr1.length);
Log.i("Bitmap", "-3");
System.arraycopy(arr2, 0, c, arr1.length, arr2.length);
Log.i("Bitmap", "0");
YuvImage yuvImage = new YuvImage(c,ImageFormat.NV21,width,height, null);
Log.i("Bitmap", "1");
ByteArrayOutputStream b = new ByteArrayOutputStream();
Log.i("Bitmap", "1");
yuvImage.compressToJpeg(cropRect, 90, b);
byte[] jpegData = b.toByteArray();
Log.i("Bitmap", "2");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferQualityOverSpeed=true;
// int scaleFactor;
//options.inSampleSize = scaleFactor;
Log.i("Bitmap", "3");
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length, options);
saveBitmap(bitmap);