获取图像元数据 - Android

时间:2012-09-27 14:07:26

标签: android metadata android-image

http://www.isco.com/webproductimages/appBnr/bnr1.jpg

我使用a website来查看图片的元数据。在这个网站上,它显示了图像的所有信息。我想知道如何在android中获取上面图像的“标题”标签。

我在这里找到了仅适用于iOS的类似问题:How to get image metadata in ios

但是我不知道如何在android上获取图像的“元数据”。 ExifInterface只提供一些信息。但是我无法用它来获得“标题”标签。

你能为android for image中的元数据提供任何代码片段吗?

3 个答案:

答案 0 :(得分:9)

从此处给出的链接下载元数据提取器...... click to download the library 选择版本2.5.0.RC-3.zip

解压缩jar文件夹

并将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) {}

答案 1 :(得分:0)

如果要检索有关图像的元数据信息ExifInterface正是您要查找的内容。以下是如何使用此接口的一个很好的示例:http://android-er.blogspot.com/2009/12/read-exif-information-in-jpeg-file.html

但是如果你想要检索在线图像的信息,我担心它还不可能。

答案 2 :(得分:-1)

如果您想从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;
}