我想在图像中存储一些元数据。我的相机应用程序为我提供了一个位图,该位图存储在存储(MediaStore)设备中。除此之外,我想在其元数据中为图片添加一些标签。我认为EXIF是做这件事的好方法。但我无法找到如何做到这一点的好参考。将EXIF元数据写入Android中的图像
如果在Android编程中有一些工具可以实现这个任务,请告诉我。
谢谢
我想在图像中存储一些元数据。我的相机应用程序为我提供了一个位图,该位图存储在存储(MediaStore)设备中。除此之外,我想在其元数据中为图片添加一些标签。我认为EXIF是做这件事的好方法。但我无法找到如何做到这一点的好参考。将EXIF元数据写入Android中的图像
如果在Android编程中有一些工具可以实现这个任务,请告诉我。
谢谢
好吧,有人(离线)指出我有用的资源。 ExifInterface
看起来像我正在寻找。 Android-er有一篇文章演示如何阅读Android中的EXIF元数据,我认为写作不应该有很大的不同。
我不知道,但我们可以用EXIF写任意的元数据,即。除了ExifInterface documentation(如经纬度,闪光灯等)中指定的以外。如果不是,那么将任意元数据写入图像文件的首选方法是什么?
感谢
public static void writeFile (File photo, double latitude, double longitude) throws IOException{
ExifInterface exif = null;
try{
Log.v("latiDouble", ""+latitude);
Log.v("longiDouble", ""+longitude);
exif = new ExifInterface(photo.getCanonicalPath());
if (exif != null) {
double latitu = latitude;
double longitu = longitude;
double alat = Math.abs(latitu);
double along = Math.abs(longitu);
String stringLati = convertDoubleIntoDegree(alat);
String stringLongi = convertDoubleIntoDegree(along);
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, stringLati);
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, stringLongi);
Log.v("latiString", ""+ stringLati);
Log.v("longiString", ""+ stringLongi);
exif.saveAttributes();
String lati = exif.getAttribute (ExifInterface.TAG_GPS_LATITUDE);
String longi = exif.getAttribute (ExifInterface.TAG_GPS_LONGITUDE);
Log.v("latiResult", ""+ lati);
Log.v("longiResult", ""+ longi);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我复制从here
ExifInterface答案可有些不可靠 - 我已经看到它在某些情况下损坏的EXIF数据。处理更多EXIF标签(包括自定义EXIF标签)的更可靠的选项是Sanselan Android。 http://code.google.com/p/sanselanandroid/ Sanselan Android的使用示例如下:http://massapi.com/source/sanselan-0.97-incubator/src/test/java/org/apache/sanselan/ sampleUsage/WriteExifMetadataExample.java.html – Theo 2012-12-09 03:02:47
查看[this](https://github.com/dragon66/pixymeta-android) – dragon66 2015-03-30 20:15:04