AndroidX ExifInterface может считывать модель / модель камеры, но не модель / модель объектива - PullRequest
0 голосов
/ 29 сентября 2019

Я создаю приложение, которое считывает данные EXIF ​​из изображений и накладывает эти данные на изображение, чтобы вы могли поделиться настройками камеры с хорошим графиком, а не печатать их вручную (например, «F / 1.4 at 1/200»).ISO400 ")

Я использую AndroidX ExifInterface 1.1.0-beta01, и код удара работает, чтобы получить все данные, кроме LensMake и LensModel, всегда равных нулю.

Я попытался вернуться к ExifInterface 1.0.0, и это не имело никакого значения, оно все равно ведет себя идентично.

Я отмечаю, что документация для ExifInterface ссылается на LensMake и LensModel как на возвращение «ASCII String», а Camera Make и Camera Model просто возвращают «String», поэтому я пробовал различные варианты getAttribute без успеха.

Эти точные файлы отлично работают в версии iOS для приложения, которое я ранее создал, и я пробовал файлы с разных камер (Fuji X-T3, Canon 5D III)

var stream: InputStream? = null
try {
    stream = contentResolver.openInputStream(uri)
    val exifInterface = ExifInterface(stream!!)
    FS = exifInterface.getAttribute(ExifInterface.TAG_F_NUMBER)!!
    SS = exifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_TIME)!!
    ISO = exifInterface.getAttribute(ExifInterface.TAG_PHOTOGRAPHIC_SENSITIVITY)!!

    val LensMake = exifInterface.getAttribute(ExifInterface.TAG_LENS_MAKE) //THIS APPEARS TO BE ALWAYS NULL :(
    val LensModel = exifInterface.getAttribute(ExifInterface.TAG_LENS_MODEL) //THIS APPEARS TO BE ALWAYS NULL :(
    val CameraMake = exifInterface.getAttribute(ExifInterface.TAG_MAKE)
    val CameraModel = exifInterface.getAttribute(ExifInterface.TAG_MODEL)
}

Я хотел бы иметь возможность прочитать информацию об объективе, я знаю, что она находится в файле, но эта библиотека, похоже, не хочет ее раскрывать.

1 Ответ

1 голос
/ 30 сентября 2019

Существует открытая ошибка , зарегистрированная на трекере ошибок, которая гласит, что:

Хотя константы доступны для LensMake и LensModel, метод получения не возвращаетфактические значения из файла.Кажется, что надлежащая поддержка отсутствует.Я думаю, причина в том, что ExifTag[] IFD_EXIF_TAGS не содержит элемент массива для марки и модели объектива.Добавление следующих строк в правильном месте вышеупомянутого массива, кажется, исправляет вещи:

new ExifTag(TAG_LENS_MAKE, 42035, IFD_FORMAT_STRING),
new ExifTag(TAG_LENS_MODEL, 42036, IFD_FORMAT_STRING),

Не уверен, насколько это надежно, но это по крайней мере подход к решению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...