Orientacja znacznika danych Exif zawsze 0
Muszę znać orientację obrazu z galerii (zrobionego aparatem). Moim początkowym podejściem było użycie MediaStore.Obrazy.Media.Orientacja, która działała dla mojego Droida 1. Podczas testowania na HTC Thunderbolt telefon zapisuje tylko 0 do tego pola.
Następnie przejąłem do odczytu danych exif:
ExifInterface exifReader = new ExifInterface(mFilePath);
exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);
To również zwraca 0 dla każdego obrazu. Czy ktoś ma pomysł jak prawidłowo uzyskać orientację zdjęcia na Androidzie?
3 answers
Oto kod, którego użyłem onActivityResult() w mojej aktywności. Zwrócona intencja polegała na wybraniu obrazu typu image/*. Dla mnie działa dobrze!
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-05 18:13:53
Moje rozwiązanie:
Usuń wszelkie sprawdzanie orientacji z danych exif. Nie mogłem znaleźć żadnego przypadku, w którym to było dokładne.
Użyj standardu String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
, Aby uzyskać orientację.
Jeśli to jest 0
Użyj
decodeStream...
if(o.outHeight > o.outWidth){ //set orientation to portrait }
Else it is landscape
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 23:55:06
To jest błąd, który znalazłem, który był związany z innym błędem Androida.. Znalazłem tu rozsądne rozwiązanie https://stackoverflow.com/a/8864367/137404
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:30