【问题标题】:Android exif data not able to get the data for key "Description"Android exif 数据无法获取关键“描述”的数据
【发布时间】:2017-11-09 19:26:33
【问题描述】:

您好,我正在尝试使用标签 Description 提取一些与图像元数据一起存储的自定义数据。

使用来自linux的命令行工具exiftool myImage.png

我得到以下数据

ExifTool Version Number         : 10.10
File Name                       : myImage.png
Directory                       : .
File Size                       : 1377 kB
File Modification Date/Time     : 2017:11:02 18:06:52+05:30
File Access Date/Time           : 2017:11:09 12:54:04+05:30
File Inode Change Date/Time     : 2017:11:02 18:06:52+05:30
File Permissions                : rw-rw-r--
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 1000
Image Height                    : 1437
Bit Depth                       : 8
Color Type                      : RGB
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Pixels Per Unit X               : 3937
Pixels Per Unit Y               : 3937
Pixel Units                     : meters
Description                     : Hi....
Image Size                      : 1000x1437
Megapixels                      : 1.4

但是当我尝试使用 ExifInterface 作为键 Description 从 android 获取数据时,我得到的是 null 值。

ExifInterface exif = new ExifInterface(path);
String d = exif.getAttribute("Description");

上面的代码有问题吗?

编辑

我在调试时可以看到以下数据。

"exif"   (id=67)    
    mAttributes HashMap  (id=70)    
        [0] HashMap$HashMapEntry  (id=99)   
            key "WhiteBalance" (id=107) 
            value   "0" (id=108)    
        [1] HashMap$HashMapEntry  (id=100)  
            key "Flash" (id=112)    
            value   "0" (id=113)    
        [2] HashMap$HashMapEntry  (id=101)  
            key "LightSource" (id=114)  
            value   "0" (id=115)    
        [3] HashMap$HashMapEntry  (id=102)  
            key "Orientation" (id=116)  
            value   "0" (id=117)    
        [4] HashMap$HashMapEntry  (id=103)  
            key "ImageLength" (id=118)  
            value   "0" (id=119)    
        [5] HashMap$HashMapEntry  (id=104)  
            key "ImageWidth" (id=120)   
            value   "0" (id=86) 
    mFilename   "/storage/emulated/0/Download/doorKeyUser_3922.png" (id=76) 
    mHasThumbnail   false   
    mInputStream    null    
    shadow$_klass_  Class (android.media.ExifInterface) (id=68) 
    shadow$_monitor_    -2024965232 [0x874d7b90]

【问题讨论】:

  • 能得到exif时间等吗?
  • 不使用代码String dt = exif.getAttribute(ExifInterface.TAG_DATETIME); 它给出的是空值。
  • 那么你的帖子不是重点。那你能提取任何属性吗?
  • 我想知道您使用的是哪个“路径”。以及你是如何获得它的。
  • (exiftool myImage.png PNG 文件不包含 exif 标头。

标签: android


【解决方案1】:

我认为正确的标签是"ImageDescription"

对应的常量TAG_IMAGE_DESCRIPTION是在API 24中添加的,但是你可以使用the support lib的版本

【讨论】:

  • 我也试过了,但是返回值id还是null,可以用png文件吗,我现在在用,我的目标sdk版本是23
  • 当然,您不能使用 png 文件,因为此类文件不包含 exif 标头。只有 jpg 文件可以。
  • 我以为你可以提取除描述之外的所有标签。看来您根本没有标签,还有另一个问题
  • 感谢您的回复,那么我可以使用任何替代方法吗?我必须为 png 文件这样做。
  • @greenapps 是对的,支持的格式是 JPEG、DNG、CR2、NEF、NRW、ARW、RW2、ORF、PEF、SRW 和 RAF,所以没有 PNG。似乎 PNG 有自己的元数据,包括描述,但我不知道允许读取它们的 java 库
猜你喜欢
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 2022-07-09
相关资源
最近更新 更多