Asegúrese de que las fotos se guardan con la misma orientación que se tomaron?

Por alguna razón, mi aplicación de cámara ahorra todas las fotos giradas 90 grados (las imágenes sólo se ven bien cuando se toma con la cámara en modo horizontal) Creo que enPictureTaken debe girar las fotos automáticamente, pero leí que hay un problema con los dispositivos Samsung (no he podido Para probarlo en otra marca por lo que no sé si es el caso). Este es mi código:

public void onPictureTaken(byte[] data, Camera camera) { // Generate file name FileOutputStream outStream = null; outStream = new FileOutputStream(filePath); outStream.write(data); outStream.close(); 

Yo estaba pensando que podría fijarse mediante la comprobación de la orientación y la rotación de la matriz de bytes, pero debe haber una manera más sencilla de hacerlo ya que la manipulación de arrays de bytes es un dolor. ¿Cómo puedo asegurarme de que las fotos se guarden de acuerdo con la orientación que tomaron?

Intente algo como esto:

 int orientation = Exif.getOrientation(data); Log.d("#", "onPictureTaken().orientation = " + orientation); if(orientation != 0) { Bitmap bmpSrc = BitmapFactory.decodeByteArray(data, 0, data.length); Bitmap bmpRotated = CameraUtil.rotate(bmpSrc, orientation); bmpSrc.recycle(); try { FileOutputStream localFileOutputStream = new FileOutputStream(filePath); bmpRotated.compress(Bitmap.CompressFormat.JPEG, 90,localFileOutputStream); localFileOutputStream.flush(); localFileOutputStream.close(); bmpRotated.recycle(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else { try { FileOutputStream localFileOutputStream = new FileOutputStream(filePath); localFileOutputStream.write(data); localFileOutputStream.flush(); localFileOutputStream.close(); } catch (IOException localIOException) { Log.e("#",localIOException.getMessage()); } } 

Hay diferentes maneras de obtener su imagen, como datos, como secuencia, como archivo, también es diferente para la cámara y la galería y otras aplicaciones. Para cada uno de ellos tiene otra forma de acceder a la etiqueta de orientación. Una vez que tengas la orientación, puedes girar tu imagen.

Usted – o para que todo el mundo – debe realmente obtener un Nexus, son agradables y girar la imagen para usted y establecer la orientación a 0, mientras que los perezosos como Samsung sólo almacenar la imagen y establecer la etiqueta de orientación. 😉

  • Las imágenes (base64) no se suben correctamente
  • ¿Cómo hacer que el botón de cancelar trabaje en llamada sdk vinculada en la vista web android?
  • Fuentes personalizadas en android
  • Cómo evitar la inyección XML como XML Bomba y ataque XXE
  • Diferenciar los diálogos individuales con DialogInterface.OnClickListener
  • barra de herramientas ocultar androide en fragmento específico
  • Android: FastScrolling SectionIndexer getSections () se llama sólo una vez
  • No se puede enviar el mensaje desde Android Wear al dispositivo host
  • Actividad de inicio de Android con onClickListener?
  • Emulador de emparejamiento de par con emulador de Android
  • Cómo eliminar R.java de JavaDoc
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.