5

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

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

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

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

您能否提供任何代码片段以在 android 中获取图像的元数据?

4

3 回答 3

9

从这里给出的链接下载元数据提取器......点击下载库 选择版本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) {}
于 2012-09-29T06:43:25.030 回答
0

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

但是,如果您想检索在线图像的信息,恐怕还不可能。

于 2012-09-27T14:25:05.380 回答
-1

如果您想从 Android 项目中的图像中检索元数据,那么您可以借助以下工具来实现:https ://github.com/drewnoakes/metadata-extractor

在你的 gradle 中使用

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;
}
于 2019-10-22T15:47:22.070 回答