Справочная информация. Я пишу приложение для камеры для программы-мессенджера. Я не могу сохранить захваченное изображение на постоянный диск в любое время. Камера должна поддерживать все ориентации. Моя реализация - это привычные примеры Surfaceview. Я использую класс Display для определения ориентации и вращения камеры соответственно. В обратном вызове takePicture jpeg я создаю растровое изображение из байта [], чтобы обойти некоторые проблемы с соотношением сторон, которые у меня были: API-интерфейс камеры: проблемы с перекрестными устройствами
Проблема Описание: На некоторых устройствах построенный битмап, сделанный на ROTATION_270 (устройство, повернутое на 90 градусов по часовой стрелке), перевернуто вверх дном. Пока что это Samsung. Я могу только предположить, что, возможно, камера спаяна с другой стороны или что-то в этом влиянии, но что ни здесь, ни там. Хотя я могу проверить, ботмад боком, я не могу логически проверить, перевернуто ли оно по размерам, поэтому мне нужен доступ к данным EXIF.
Android предоставляет синтаксический анализатор для этого http://developer.android.com/reference/android/media/ExifInterface.html, но, к сожалению, у него есть один конструктор, который принимает файл... который я не знаю, t есть и не хотят. Интуитивно я мог написать конструктор для байтового массива, но это кажется очень болезненным, учитывая их вызовы в собственный код http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2.1_r1/android/media/ExifInterface.java
Мой вопрос состоит из двух частей:
-
Кто-нибудь знает, содержит ли массив byte [] полный EXIF-заголовок jpeg данные как есть или есть путь через BitmapFactory.decode(...)/ BitmapFactory.compress(...) добавляет, что как-то?
-
Если эти EXIF-данные выходят из массива байтов, как я могу разобрать ориентировочная информация надежным образом?
Редактировать 10/18/12
Ответ pcans ниже включает часть 2 моего вопроса. Как я указал в комментариях ниже своего ответа, если вы хотите использовать этот анализатор, вам придется включить источник в свой проект. Изменения, упомянутые в этой связанной ссылке SO, уже были сделаны и отправлены здесь: https://github.com/strangecargo/metadata-extractor
ПРИМЕЧАНИЕ. Новые версии метаданных-экстрактора работают непосредственно на Android без изменений и доступны через Maven.
Однако, что касается части 1, я получаю 0 тегов из парсера, когда я запускаю его с массивом байтов, который я получаю от takePicture. Меня беспокоит, что массив байтов не имеет необходимых мне данных. Я буду продолжать изучать это, но приветствую дальнейшее понимание.