Написание метаданных EXIF для изображений на Android
Я хочу хранить некоторые метаданные в изображениях. Приложение моей камеры дает мне растровое изображение, которое я храню на устройстве хранения (MediaStore). В дополнение к этому, я хочу добавить несколько тегов к картинке в свои метаданные. Я думаю, что EXIF - хороший способ сделать это. Но я не мог найти хороших ссылок на то, как это сделать.
Если есть какие-то инструменты для достижения этой задачи в Android-программировании, пожалуйста, дайте мне знать.
Спасибо
Ответы
Ответ 1
Хорошо, Somebody (offline) указал мне на полезный ресурс. ExifInterface
выглядит так, как я искал. Android-er есть сообщение, демонстрирующее, как читать метаданные EXIF в Android, и я думаю, что писать не должно быть совсем иначе.
Я не знаю, но можем ли мы EXIF писать произвольные метаданные, т.е. кроме тех, которые указаны в документации ExifInterface (например, широта, долгота, вспышка и т.д.). Если нет, что может быть предпочтительным способом записи произвольных метаданных в файлы изображений?
Спасибо
Ответ 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();
}
}
Я скопировал ответ здесь