Запись метаданных EXIF ​​для изображений в Android - PullRequest
13 голосов
/ 14 июля 2010

Я хочу сохранить некоторые метаданные в изображениях. Приложение моей камеры выдает мне растровое изображение, которое я сохраняю в устройстве хранения (MediaStore). В дополнение к этому, я хочу добавить несколько меток к изображению в его метаданных. Я думаю, что EXIF ​​- хороший способ сделать это. Но я не смог найти хорошие рекомендации о том, как это сделать.

Если есть какие-то инструменты для решения этой задачи в программировании на Android, сообщите мне.

Спасибо

Ответы [ 2 ]

9 голосов
/ 14 июля 2010

Хорошо, кто-то (в автономном режиме) указал мне на полезный ресурс.ExifInterface выглядит так, как я искал. Android-er имеет пост, демонстрирующий, как читать метаданные EXIF ​​в Android, и я думаю, что написание не должно сильно отличаться.

Я не знаю, но можем ли мы EXIF ​​писать произвольные метаданныет.е.кроме тех, которые указаны в документации ExifInterface (например, широта, долгота, вспышка и т. д.).Если нет, что может быть предпочтительным методом записи произвольных метаданных в файлы изображений?

Спасибо

6 голосов
/ 09 ноября 2014
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();
    }
}

Я скопировал ответ с здесь

...