Comment faire pivoter et retourner des bitmap dans onPictureTaken

Je suis la recherche dans onPictureTaken que l'image enregistrée est en miroir sur l'axe des y et rotation de 90 degrés dans le sens horaire, même si l'aperçu de la caméra ne l'était pas. C'est sur mon Nexus S qui est de la course 2.3.6. Le même programme en cours d'exécution sur mon Nexus 4 avec 4.2 a l'image résultante en miroir sur l'axe des y et rotation de 180 degrés dans le sens horaire.

C'est le code, je suis en cours d'exécution dans onPictureTaken:

@Override
public void onPictureTaken(final byte[] data, Camera camera) {
Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length);
String path = MediaStore.Images.Media.insertImage(getContentResolver(), picture, "name" , "description");
Log.e("tag", "path: " + path); //prints something like "path: content://media/external/images/media/819"
try {
ExifInterface exif = new ExifInterface(path); //prints this error: "04-25 21:28:21.063: E/JHEAD(12201): can't open 'content://media/external/images/media/819'"
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
Log.e("tag", "exif orientation: " + orientation); //this is outputting orientation unknown
} catch (IOException e) {
e.printStackTrace();
}
}

Quelqu'un peut me montrer comment je remédier à cela étant donné que j'ai l'impression d'obtenir des résultats différents à partir de différents appareils? Comment puis-je détecter l'orientation de l'image résultante, de sorte que je sais le faire pivoter de 90 ou de 180 degrés dans le sens antihoraire?

[MODIFIER]

J'ai ajouté un peu plus d'informations à l'aide de la ExifInterface trucs que j'ai lu à propos, mais que l'information ne semble pas pan...

je pense que ExifInterface quand je vois cela, je ne sais pas, juste un commentaire, je n'ai jamais utilisé raw
Attendez, @JRowan donc, avez-vous utilisé la caméra à tous? Si oui, comment obtenez-vous l'image à partir de la caméra?
onActivityResult() avec de nouvelles Intentions(MediaStore.ACTION_IMAGE_CAPTURE);
Ah, je vois. Je ne suis pas à l'aide d'une Intention... l'aperçu de La caméra, je suis en cours d'exécution est d'être recouvertes par un autre point de vue... Donc je ne pense pas que je pourrais l'utiliser, non?
je sais que ce dont on parle, vous pouvez résoudre par le biais de l'intention par l'obtention de l'ExifInterface attribut de l'image, comment vos de le faire peut-être vous pouvez définir des ExifInterface attribut, je ne suis pas sûr

OriginalL'auteur user5243421 | 2013-04-26