Escribir metadatos EXIF ​​en imágenes en Android

Quiero almacenar algunos metadatos en imágenes. Mi aplicación de cámara me da un mapa de bits, que guardo en el dispositivo de almacenamiento (MediaStore). Además de esto, quiero añadir algunas etiquetas a la imagen en sus metadatos. Creo que EXIF ​​es una buena manera de hacer esto. Pero no pude encontrar buenas referencias sobre cómo hacer esto.

Si hay algunas herramientas para lograr esta tarea en la programación de Android, házmelo saber.

Gracias

Ok, alguien (fuera de línea) me señaló a un recurso útil. El ExifInterface parece a lo que estaba buscando. Android-er tiene una publicación que demuestra cómo leer metadatos EXIF ​​en Android y creo que escribir no debería ser muy diferente.

No sé, pero podemos EXIF ​​para escribir metadatos arbitrarios, es decir. Distintos de los especificados en la documentación de ExifInterface (como latitud, longitud, flash, etc.). Si no, ¿cuál podría ser un método preferido para escribir metadatos arbitrarios en archivos de imagen?

Gracias

 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(); } } 

Copié la respuesta de aquí

  • ¿Por qué estoy recibiendo java.io.IOException: Mark ha sido invalidado?
  • trabajar con imágenes grandes en android
  • Bordes negros alrededor de la captura de pantalla tomada
  • Android Cómo reciclar el mapa de bits correctamente cuando se utiliza RecyclerView?
  • BitmapFactory.decodeStream (inputStream) devuelve siempre null cuando algunos bytes son incorrectos
  • Captura toda la vista de desplazamiento más grande que la pantalla
  • Inclinar un mapa de bits sólo en la dirección vertical
  • Necesito enviar un archivo de imagen al servidor de Clarifai para la clasificación de imágenes, pero sigo recibiendo "marcos omitidos, aplicación que hace demasiado trabajo"
  • ¿Cómo hacer que cualquier vista dibuje a la lona?
  • Cómo almacenar (imagen de mapa de bits) y recuperar la imagen de la base de datos sqlite en android?
  • CORRUPCIÓN DE MEMORIA HEAP EN los errores dlmalloc o dlfree y SIGSEGV en Android ICS 4.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.