Beim Abrufen der Drehung von ExifInterface wird immer 0 zurückgegeben
Ich übergebe eine Bitmap per Bundle weiteronActivityResult
von einer Kamera.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "picture");
mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
startActivityForResult(intent, REQUEST_TAKE_PHOTO);
Ich kann die Bitmap bekommen:
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), mCapturedImageURI);
Allerdings ist mir auf einigen Geräten aufgefallen, dass das Bild gedreht wird. Nach der Suche nach Beiträgen hier schien die typische Lösung die Rotation zu erhalten über:
String path = mCapturedImageURI.getPath();
ExifInterface exif = new ExifInterface(path);
int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
Leider meineint rotation
ist immer 0, obwohl die Bitmap gedreht ist.
Ich habe auch versucht, dies funktioniert, als ich bereits ein Bild auf das Gerät hochgeladen habe, aber die Ausrichtung ist immer noch 0:
String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
Cursor cur = managedQuery(mCapturedImageURI, orientationColumn, null, null, null);
if (cur != null && cur.moveToFirst()) {
orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
}
Kann jemand etwas sehen, was ich hier falsch mache? Oder eine andere Problemumgehung?
Im Allgemeinen wird die Bitmap mit der hinteren Kamera um 90 Grad gegen den Uhrzeigersinn und mit der vorderen Kamera um 90 Grad im Uhrzeigersinn gedreht. Funktioniert einwandfrei auf Moto G. Gedreht auf Galaxy S3 und LG G2.