我想在图像中存储一些元数据。我的相机应用程序给了我一个位图,我将它存储在存储 (MediaStore) 设备中。除此之外,我想在其元数据中为图片添加一些标签。我认为 EXIF 是一个很好的方法。但我找不到关于如何做到这一点的好的参考资料。
如果在Android编程中有一些工具可以实现这个任务,请告诉我。
谢谢
好的,有人(离线)向我指出了一个有用的资源。ExifInterface
看起来像我正在寻找的东西。Android-er有一篇文章演示了如何在 Android 中读取 EXIF 元数据,我认为写作应该不会有太大不同。
我不知道,但我们可以 EXIF 来编写任意元数据,即。除了ExifInterface 文档中指定的那些(如纬度、经度、闪光等)。如果没有,将任意元数据写入图像文件的首选方法是什么?
谢谢
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();
}
}
我从这里复制了答案