18

我试图通过android将“GPSTimeStamp”设置为jpg的exif标签。这个文档非常稀缺:http:
//developer.android.com/reference/android/media/ExifInterface.html#TAG_GPS_TIMESTAMP 类型是字符串。常数值:“GPSTimeStamp”。但具体的格式是什么?

看这里: https:
//ExifTool.org/TagNames/GPS.html GPSTimeStamp:rational64u[3] (写入时,如果存在日期,则将其剥离,如果包含时区,则将时间调整为 UTC)

所以我需要一个长值一个 3 单元格数组?我不确定要输入什么。我已获得“此修复的 UTC 时间,自 1970 年 1 月 1 日以来的毫秒数”。通过 location.gettime()。
http://developer.android.com/reference/android/location/Location.html#getTime%28%29
如果我将长值作为字符串写入时间戳并在 Linux 上通过“exif”检查 exif 标签,我得到错误“预期分母”。所有使用 hh:mm:ss 或其他格式的实验都失败了。在这里有点失落。

4

1 回答 1

2

GPSTimeStamp采样时间属性的正确格式14:22:32

"14/1,22/1,32/1"

您可以使用以下代码:

Location location = ...; // TODO - Set location properly.
long locationTome = location.getTime();
ExifInterface imageExif = new ExifInterface("absolute_path_to_image");
Calendar calendar = Calendar.getInstance();

calendar.setTimeInMillis(locationTome);
int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);

String exifGPSTimestamp = hourOfDay + "/1," + minutes + "/1," + seconds + "/1";

imageExif.setAttribute("GPSTimeStamp", exifGPSTimestamp);
imageExif.saveAttributes();

它具有与GPSLatitudeGPSLongitude属性相似的格式。这种格式的有用解释也可以在这里找到:http ://www.ridgesolutions.ie/index.php/2015/03/05/geotag-exif-gps-latitude-field-format/

于 2015-03-19T13:20:45.087 回答