在Android中将EXIF元数据写入图像
我想在图像中存储一些元数据。我的相机应用程序提供了一个位图,我将其存储在存储(MediaStore)设备中。除此之外,我还想在图片的元数据中添加一些标记。我认为EXIF是一个很好的方法。但我找不到关于如何做这件事的好参考资料 如果有一些工具可以在Android编程中实现此任务,请让我知道 谢谢好的,有人(离线)给我指了一个有用的资源。在Android中将EXIF元数据写入图像,android,bitmap,metadata,exif,Android,Bitmap,Metadata,Exif,我想在图像中存储一些元数据。我的相机应用程序提供了一个位图,我将其存储在存储(MediaStore)设备中。除此之外,我还想在图片的元数据中添加一些标记。我认为EXIF是一个很好的方法。但我找不到关于如何做这件事的好参考资料 如果有一些工具可以在Android编程中实现此任务,请让我知道 谢谢好的,有人(离线)给我指了一个有用的资源。ExifInterface看起来像我正在搜索的内容。有一篇文章演示了如何在Android中读取EXIF元数据,我认为写作应该不会有太大的不同 我不知道,但我们是否可
ExifInterface
看起来像我正在搜索的内容。有一篇文章演示了如何在Android中读取EXIF元数据,我认为写作应该不会有太大的不同
我不知道,但我们是否可以使用EXIF来编写任意元数据,即除中指定的元数据(如纬度、经度、flash等)之外的元数据。如果不是,将任意元数据写入图像文件的首选方法是什么
谢谢
我从ExiFinInterface复制了答案,它可能有点不可靠——我看到它在某些情况下损坏了EXIF数据。处理更多EXIF标记(包括自定义EXIF标记)的更可靠选项是Sanselan Android。Sanselan Android的使用示例如下:请查看您能否从第2段中提出一个新问题,以便我们能够正确回答?(我觉得答案是肯定的)刚刚做了:我还发现这个库很有用:
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();
}
}