【问题标题】:Get Meta Data of Image - Android获取图像的元数据 - Android
【发布时间】:2012-09-27 14:07:25
【问题描述】:

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

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

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

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

你能提供任何代码sn-p在android中获取图像的元数据吗?

【问题讨论】:

    标签: android metadata android-image


    【解决方案1】:

    从这里给出的链接下载元数据提取器......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) {}
    

    【讨论】:

    • 我有一个 .jpg 文件,上面写着 ImageProcessingException: File format is not supported。我正在阅读 .jpg 图像。知道出了什么问题吗?
    • 这是唯一对我有用的东西,可以从我的 android 上的 iOS 设备获取图片方向。谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 嗨@korhanwzturk。谢谢您的回复。我见过exifinterface,但它没有得到像标题这样的图像的基本信息。
    • Exif 接口也有其自身的局限性。就像它为损坏的图像返回空值一样。最好避免它。
    • 对于大多数情况返回 null,只有宽度和高度是正确的。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2022-07-09
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      相关资源
      最近更新 更多