Joh*_*nry 6 format datetime android exif
我已经研究并尝试了许多选项来尝试让它发挥作用,但不幸的是,我没有得到任何结果.
我想要做的是在Android应用程序中的JPEG的Exif数据中设置Date Taken标签(Tag_DateTime).我已经有了工作代码来设置Latitude和Longitute标签,但是在我的生活中不能得到Date taken标签来设置.
这是代码:
SimpleDateFormat fmt_Exif = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
try {
ExifInterface exif = new ExifInterface(filePhoto.getPath());
// Set and save the GPS and time data
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, strLat);
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, strLong);
exif.setAttribute(ExifInterface.TAG_DATETIME, fmt_Exif.format(locLatestLocation.getTime()));
exif.saveAttributes();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我在某个帖子中读到标签需要以毫秒格式编写,所以试过这个也无济于事.为了使用实际存储的内容确认我的格式,我从具有Date Taken标记的jpeg文件中读取并输出了未格式化的标记,但输出的格式与我写入标记的格式完全相同不工作
值得一提的是,我已经调查了Sanselan类,并且由于复杂性和缺乏示例,我宁愿尝试让现有的解决方案工作,然后再改为完全不同的解决方案.
有没有人设法做到这一点,如果是这样,我做错了什么?
令人讨厌的是,Android 的 ExifInterface 会默默地丢弃它认为无效的任何数据。更糟糕的是,文档甚至没有提到什么是有效值。
我还发现,如果您指定了一个 Android 无法弄清楚的 EXIF 属性(即:它不是 ExifInterface 的 TAG_ 常量之一),它也会完全忽略它,并且也会默默地失败。
我刚才需要做同样的事情.我从麻省理工学院读过这篇EXIF文章,我得TAG_DATETIME
写完:
exif.setAttribute(ExifInterface.TAG_DATETIME,"2013:06:21 00:00:07");
exif.setAttribute(ExifInterface.TAG_GPS_DATESTAMP,"2013:06:21");
exif.setAttribute(ExifInterface.TAG_GPS_TIMESTAMP,"00:00:07");
Run Code Online (Sandbox Code Playgroud)
看起来像这样预览:
请注意,这仅在EXIF/TIFF和GPS部分中,而不是实际的原始和数字化时间戳:
我也想更改Original和Digitized时间戳,所以尝试了JHeader库:
try {
JpegHeaders headers = new JpegHeaders(FakeBurst.PICTURE_PATH);
App1Header app1Header = headers.getApp1Header();
app1Header.setValue(new TagValue(Tag.IMAGEDESCRIPTION,"bla bla bla"));
app1Header.setValue(new TagValue(Tag.DATETIMEORIGINAL,"2013:06:21 00:00:07"));
app1Header.setValue(new TagValue(Tag.DATETIMEDIGITIZED,"2013:06:21 00:00:07"));
headers.save(true);
System.out.println(this+" wrote exif timestamp");
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
加上这个onCreate
:
JpegHeaders.preheat();
Run Code Online (Sandbox Code Playgroud)
它工作:
我看到这篇文章是从12月开始的,所以我上面发布的Android ExifInterface代码可能不适用于该版本的SDK,但我猜JHeader库方法可行.