Описание тега экстрактора метаданных Java
Я использую экстрактор метаданных библиотеки Java и не могу правильно извлечь описание тега, используя приведенный ниже код метода getUserCommentDescription, хотя tag.getDescription действительно работает:
String exif = "File: " + file;
File jpgFile = new File(file);
Metadata metadata = ImageMetadataReader.readMetadata(jpgFile);
for (Directory directory : metadata.getDirectories()) {
String directoryName = directory.getName();
for (Tag tag : directory.getTags()) {
String tagName = tag.getTagName();
String description = tag.getDescription();
if (tagName.toLowerCase().contains("comment")) {
Log.d("DEBUG", description);
}
exif += "\n " + tagName + ": " + description; //Returns the correct values.
Log.d("DEBUG", directoryName + " " + tagName + " " + description);
}
if (directoryName.equals("Exif IFD0")) {
// create a descriptor
ExifSubIFDDirectory exifDirectory = metadata.getDirectory(ExifSubIFDDirectory.class);
ExifSubIFDDescriptor descriptor = new ExifSubIFDDescriptor(exifDirectory);
Log.d("DEBUG","Comments: " + descriptor.getUserCommentDescription()); //Always null.
}
Я что-то здесь упускаю?
1 ответ
Решение
Вы проверяете имя каталога Exif IFD0
а затем доступ к ExifSubIFDDirectory
,
Попробуйте этот код вне цикла:
Metadata metadata = ImageMetadataReader.readMetadata(jpgFile);
ExifSubIFDDirectory exifDirectory = metadata.getDirectory(ExifSubIFDDirectory.class);
ExifSubIFDDescriptor descriptor = new ExifSubIFDDescriptor(exifDirectory);
String comment = descriptor.getUserCommentDescription();
Если это вернется null
тогда это может быть проблема кодирования или ошибка. Если вы запустите этот код:
byte[] commentBytes =
exifDirectory.getByteArray(ExifSubIFDDirectory.TAG_USER_COMMENT);
У вас есть байты в массиве?
Если это так, то, пожалуйста, откройте проблему в трекере и включите образец изображения, которое можно использовать для воспроизведения проблемы. Вы должны авторизовать любое изображение, которое вы предоставляете для использования в открытом доступе.