¿Hay una manera simple de dar vuelta a la disposición del byte del onPreviewFrame de la cámara en una imagen en androide?

Pregunto si hay una manera simple porque hay un informe de la edición de google que dice que usar decodeByteArray no es posible. Pero ese informe se originó en 2008 y esperaba que hubiera una solución que no se publicara allí. El método enumerado en el informe de la edición era descodificar el formato usted mismo, pero preferiría no tener que poner eso adentro y retardar el programa. Cualquier ayuda en todo sería apreciada.

La forma más fácil es crear una BufferedImage de la siguiente manera:

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length); 

Datos es la matriz de bytes.

Supongo que su matriz de bytes es de la vista previa de la cámara? Si es así tienes que decodificarlo pero con 2.2 es bastante fácil ahora.

Cree una imagen YUV de la matriz de bytes ya que los datos sólo estarán en ImageFormat.NV21( int code 17)

 img = new YuvImage(imgData, ImageFormat.NV21, width, height, null); 

Cree un rectángulo del mismo tamaño que la imagen.

Cree un ByteArrayOutputStream y pase esto, el rectángulo y el valor de compressToJpeg() para compressToJpeg() .

Entonces puedes usar

 Bitmap mBitmap = BitmapFactory.decodeByteArray(outputStream.toByteArry(),0,outputStream.size()); 

Yo uso esto para cada marco en la devolución de llamada y funciona bien. Espero que esto ayude.

  • ¿Cómo obtener datos de vista previa sin procesar de un objeto de cámara al menos 15 cuadros por segundo en Android?
  • ¿Cuándo Android toma su reciente captura de pantalla del selector de aplicaciones?
  • ¿Cómo mejorar la vista previa de la cámara?
  • NullPointerException en WebView (WebView.requestFocus ())
  • Android Camera Preview - ¿Cómo 'congelar' la cámara?
  • ¿Cómo maneja el android las diferencias entre el tamaño de vista previa y el tamaño real de SufaceView?
  • Vista previa de la cámara con una imagen transparente arriba
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.