SetRotation (90) para tomar la imagen en el modo vertical no funciona en los dispositivos samsung

Según la documentación, setRotation (90) debe girar la imagen JPEG capturada ( takePicture en modo horizontal.

Esto funciona bien en un teléfono HTC, pero no funciona en Samsung Google Nexus S y Samsung Galaxy S3. ¿Es esto un error?

Sé que puedo utilizar la matriz de rotación de transformación, pero deseo que el sistema operativo puede hacer esto de manera más eficiente, y no quieren correr el riesgo de sobre-rotación en algunos otros dispositivos.

editar

Establecer camera.setDisplayOrientation(90); Hizo la previsualización para estar en modo retrato, sin embargo no tuvo ningún efecto en la imagen tomada.

Además, además de setRotation , también he intentado establecer el tamaño de la imagen – donde hago h con w : parameters.setPictureSize(1200, 1600); . Esto tampoco tuvo ningún efecto.

solución

Al parecer, los teléfonos Samsung establecen la etiqueta de orientación EXIF, en lugar de girar píxeles individuales. Como ariefbayu sugirió, leer el mapa de bits utilizando BitmapFactory no es compatible con esta etiqueta. Su muestra de código es la solución, y esta solución también es compatible con el uso de inSampleSize .

Trato de responder a esto en relación con la etiqueta Exif. Esto es lo que hice:

 Bitmap realImage = BitmapFactory.decodeStream(stream); ExifInterface exif=new ExifInterface(getRealPathFromURI(imagePath)); Log.d("EXIF value", exif.getAttribute(ExifInterface.TAG_ORIENTATION)); if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("6")){ realImage=ImageUtil.rotate(realImage, 90); }else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("8")){ realImage=ImageUtil.rotate(realImage, 270); }else if(exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("3")){ realImage=ImageUtil.rotate(realImage, 180); } 

El ImageUtil.rotate() :

 public static Bitmap rotate(Bitmap bitmap, int degree) { int w = bitmap.getWidth(); int h = bitmap.getHeight(); Matrix mtx = new Matrix(); mtx.postRotate(degree); return Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, true); } 

Liso22, el flujo variable no hace la diferencia, sólo tienes que conectar tu mapa de bits, sin embargo lo tienes (decodeFile etc). Y si tiene problemas con el 'ImageUtil.rotate (), simplemente escriba' static static bitmap rotate () 'como un método con los mismos parámetros y haga que' real image 'sea igual a eso. De todos modos, esta solución no parece estar funcionando para mí, la etiqueta exif devuelve 1 (normal) ya sea en retrato o paisaje.

  • ¿Cómo puedo encontrar la carpeta de imágenes de la cámara de un teléfono Android?
  • Android Captura de vídeo mediaRecorder.start () falló -19
  • La calidad de vista previa de la cámara en Android es mala
  • Visualización de la vista previa de cámara en vivo modificada
  • Android: muestra líneas de cuadrícula en la cámara
  • Obtener imagen de captura y mostrar la imagen en otro diseño utilizando otra actividad en android
  • Android - ¿Cómo funciona la carga instantánea de Google+?
  • Problemas al capturar varias fotos: la aplicación deja de responder, la vista previa de la cámara se vuelve verde y no se guarda ninguna imagen
  • Tratando de guardar la imagen en una carpeta de imágenes determinada que no se ha creado
  • Captura de imagen de la cámara no logra regresar en Galaxy Tab Edición limitada
  • Acceso a la cámara en el teléfono para iOS y Android mediante HTML5
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.