Получить метаданные изображения - 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;
}
Другие вопросы по тегам