Получить метаданные изображения - Android
http://www.isco.com/webproductimages/appBnr/bnr1.jpg
Я использовал веб-сайт, чтобы увидеть метаданные изображения. На этом сайте, он показывает всю информацию об изображении. Я хочу знать, как получить тег "Заголовок" на изображении выше в Android.
Я нашел здесь похожий вопрос только для iOS: как получить метаданные изображения в ios
Однако я не знаю, как получить "метаданные" изображения на Android. ExifInterface
только дает некоторую информацию. Но я не могу получить тег "Заголовок" с ним.
Можете ли вы предоставить какой-либо фрагмент кода для получения метаданных в Android для изображения?
2 ответа
Загрузите экстрактор метаданных по ссылке, приведенной здесь...... нажмите, чтобы загрузить библиотеку, выберите версию 2.5.0.RC-3.zip
Извлеките флягу
и импортируйте jar в папку libs в вашем проекте, а затем выполните приведенный ниже код
try {
InputStream is = new URL("your image url").openStream();
BufferedInputStream bis = new BufferedInputStream(is);
Metadata metadata = ImageMetadataReader.readMetadata(bis,true);
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
System.out.println(tag);
}
}
}
catch (ImageProcessingException e){}
catch (IOException e) {}
Если вы хотите получить метаданные об изображении, ExifInterface - это то, что вы ищете. Вот довольно хороший пример использования этого интерфейса: http://android-er.blogspot.com/2009/12/read-exif-information-in-jpeg-file.html
Но если вы хотите получить информацию об онлайн-изображении, боюсь, это пока невозможно.
Если вы хотите получить метаданные из изображения в проекте Android, вы можете сделать это с помощью: https://github.com/drewnoakes/metadata-extractor
Реализуйте это в своем градиенте, используя
implementation 'com.drewnoakes:metadata-extractor:2.12.0'
Полный код выглядит следующим образом
private static String getImageMetaData(Uri image1) {
try {
InputStream inputStream = FILE_CONTEXT.getContentResolver().openInputStream(image1);
try {
image1.getEncodedUserInfo();
Metadata metadata = ImageMetadataReader.readMetadata(inputStream);
for (Directory directory1 : metadata.getDirectories()) {
if (directory1.getName().equals("Exif IFD0")) {
for (Tag tag : directory1.getTags()) {
if (tag.getTagName().equals("Date/Time")) {
return tag.getDescription();
}
}
}
}
} catch (ImageProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}