Necesito saber la orientación de una imagen de la galería (tomada por la cámara). Mi planteamiento inicial era utilizar MediaStore.Imágenes.Los medios de comunicación.La ORIENTACIÓN que estaba trabajando para mi Droid 1. Mientras que las pruebas en el HTC Thunderbolt, que sólo en el teléfono guarda de 0 a ese campo.

A continuación, fui a leer los datos exif:

 ExifInterface exifReader = new ExifInterface(mFilePath);
 exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);

Esto también devuelve 0 para cada imagen. Alguien tiene ideas sobre cómo obtener correctamente la orientación de una foto tomada en android?

InformationsquelleAutor sgarman | 2011-04-07

3 Comentarios

  1. 28

    Aquí está el código que he usado onActivityResult() en mi actividad. La intención fue devuelto para escoger una imagen del tipo de imagen/*. Funciona bien para mí!

    Uri imageUri = intent.getData();
    String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
    Cursor cur = managedQuery(imageUri, orientationColumn, null, null, null);
    int orientation = -1;
    if (cur != null && cur.moveToFirst()) {
        orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
    }  
    Matrix matrix = new Matrix();
    matrix.postRotate(orientation);
    • este enfoque ha funcionado para mí para conseguir la orientación de la imagen en la galería. Gracias..!! 🙂
    • Esa es la única solución que funcionó para mí
    • Gracias ! tenga en cuenta que managedQuery está ahora en desuso. Se puede reemplazar con «getApplicationContext().getContentResolver().consulta(…)».
    • Esta es la única manera trabajado demasiado.
    • Esta es una buena solución y funciona para mí cuando ExifInterface no funciona.
    • En Turrón, con una imagen de prueba seleccionada de la galería con un 180 orientación, se devuelve 0.

  2. 5

    Mi solución:

    Eliminar cualquier comprobación para la orientación de los datos exif. Yo no podría encontrar un ejemplo donde se precisa.

    Utilizar el estándar String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION}; para obtener una orientación.

    Si este es 0 uso
    decodeStream…

    if(o.outHeight > o.outWidth){
      //set orientation to portrait
    }

    demás es paisaje

    • Esto no funciona para mí, porque, de alguna manera, la altura, la anchura está correctamente activada cuando la imagen era en realidad en una orientación diferente..
    • Acabo de actualizar mi propio problema, esta es la forma en que me superó este problema; stackoverflow.com/a/8864367/137404
    • ¿Y si la imagen es cuadrada de modo que la anchura y la altura es la misma, pero la imagen es invertida y quiero darle la vuelta?
    • puedes publicar solución completa?

Dejar respuesta

Please enter your comment!
Please enter your name here