#java #android #xiaomi #android-exifinterface
Вопрос:
Следующий код успешно работает для получения ориентации изображения, выполненного с помощью камеры Android, которое считывается через ExifInterface, при условии, что оно выполняется на эмуляторе Android:
orientation=Integer.valueOf(exif.getAttribute(ExifInterface.TAG_ORIENTATION));
Но в устройстве Xiaomi он всегда возвращает значение 0, которое было бы зарезервированным значением в соответствии со спецификацией EXIF.
Возможно, устройство Xiaomi не могло поддерживать получение значений из ExifInterface, но оно способно успешно извлекать следующее значение:
double vel = exif.getAttributeDouble(ExifInterface.TAG_SHUTTER_SPEED_VALUE, 0);
Таким образом, выглядит довольно странно, что он может правильно получить это последнее значение, но не правильное для ориентации.
Эти два данные извлекаются последовательно следующим образом:
double vel = exif.getAttributeDouble(ExifInterface.TAG_SHUTTER_SPEED_VALUE, 0); shutterSpeed =((double ) 1/ Math.round(Math.pow(2.0, vel))); orientation=Integer.valueOf(exif.getAttribute(ExifInterface.TAG_ORIENTATION));
Итак, я также не вижу никакой причины, связанной с тем, что изображение, возможно, не готово к получению своей ориентации.
Если возможно, я хотел бы придерживаться использования ExifInterface для получения ориентации, так как после некоторых исследований, похоже, довольно сложно определить, использует ли устройство Android заднюю часть фронтальной камеры, если это вообще возможно.
Комментарии:
1. Скопируйте файл jpg на то устройство, которое имеет известную ориентацию на другом устройстве.