2010-11-18 6 views
0

Le format de mon application est entièrement en mode portrait. Bizarrement, quand je prends une photo en mode portrait, elle est affichée sur le côté de l'ImageView (comme si elle était accrochée dans le paysage) ... la seule façon de l'afficher est de prendre l'image en mode paysage.Obtenir l'appareil photo pour toujours retourner une photo cassée vers le haut?

Quelqu'un connaît une solution de contournement simple qui affiche le côté de la photo vers le haut, quelle que soit l'orientation de la caméra? Je peux facilement fournir mon code si quelqu'un doit jeter un coup d'œil.

Merci!

Répondre

3

Voici le code que j'ai utilisé onActivityResult() dans mon activité. L'intention retournée était de choisir une image de type image/*. Fonctionne bien pour moi!

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); 
+0

Clever! J'ai une solution à cela qui examine les tags EXIF ​​... c'est beaucoup plus propre. (Bien que BitmapFactory.decodeBitmap() ne respecte pas l'orientation JPEG est sûrement le vrai problème). –

+0

Merci l'homme. J'ai essayé d'utiliser les balises Exif mais c'était toujours 0 lors de la vérification de l'image uri retourné de l'intention. – dbaugh