Android gira las imágenes en 90 grados (tomadas por la cámara)
Estoy tomando una foto en mi dispositivo Samsung Galaxy SII del código. Después de guardar y mostrarlo en la pantalla veo que se gira 90 grados.
He entendido que es un problema de dispositivo – no sucede en todos los dispositivos.
- ¿Cómo ver las fotos tomadas en Android sin utilizar la base de datos?
- ¿Está correctamente documentada la CameraInfo.orientation de Android? ¿Implementado incorrectamente?
- onActivityResult siempre obtiene Activity.RESULT_CANCELED cuando toma la imagen en FragmentActivity
- Problema de orientación de la cámara en Android
- Funciones de la cámara Android no funcionan en algunos teléfonos
Estoy tomando el uskng de la imagen la intención dada de la cámara y la ahorro en la función de OnActivityResult.
Miré alrededor pero no encontré una solución sólida para esto.
¿Alguna idea de cómo encontrar el problema y rotarlo sólo en dispositivos "problemáticos"?
- La cámara de Android tiene una imagen de múltiples bugs para algunos usuarios
- Grabación de superposición de texto / imagen en Android
- Cómo comprobar si el dispositivo tiene luz de flash led android
- ¿Qué significa SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS?
- Autofoco que lanza la excepción
- ¿Cómo iniciar la cámara frontal con intención?
- Uso de la cámara en la aplicación Phonegap con sólo entrada HTML, sin Camera API
- Android Cámara de grabación de vídeo, pero juega al revés
Se trata de un error basado en diferentes configuraciones de fabricantes. Algunos teléfonos los giran, otros no. Ver el enlace, es el número # 1193
Pase la ruta del archivo que se captura desde la cámara
public Bitmap rotateBitmapOrientation(String photoFilePath) { // Create and configure BitmapFactory BitmapFactory.Options bounds = new BitmapFactory.Options(); bounds.inJustDecodeBounds = true; BitmapFactory.decodeFile(file, bounds); BitmapFactory.Options opts = new BitmapFactory.Options(); Bitmap bm = BitmapFactory.decodeFile(file, opts); // Read EXIF Data ExifInterface exif = new ExifInterface(file); String orientString = exif.getAttribute(ExifInterface.TAG_ORIENTATION); int orientation = orientString != null ? Integer.parseInt(orientString) : ExifInterface.ORIENTATION_NORMAL; int rotationAngle = 0; if (orientation == ExifInterface.ORIENTATION_ROTATE_90) rotationAngle = 90; if (orientation == ExifInterface.ORIENTATION_ROTATE_180) rotationAngle = 180; if (orientation == ExifInterface.ORIENTATION_ROTATE_270) rotationAngle = 270; // Rotate Bitmap Matrix matrix = new Matrix(); matrix.setRotate(rotationAngle, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2); Bitmap rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bounds.outWidth, bounds.outHeight, matrix, true); // Return result return rotatedBitmap; }
Supongo que podría ser el problema de su sensor de orientación .. ¿Procesar el valor del sensor en su programa .. para saber cuando el usuario ha tomado la foto el dispositivo estaba en la orientación horizontal u ..
- Uso de transiciones de actividad de SharedElement con una vista personalizada
- ¿Cómo detectar la duplicación en una vista?