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.
- Agregar un círculo de cuadro redondo en mapa de bits redondeado
- La clase PdfRenderer de Android produce imágenes de baja calidad
- Cómo convertir la matriz de bytes en Bitmap
- ¿Cómo tener una imagen circular, centro-recortada, sin crear un nuevo mapa de bits?
- Ajuste automático de brillo, contraste y nitidez de una imagen de mapa de bits
Gracias
- Recortar mapa de bits sin leer todo el mapa de bits primero
- Cómo rotar el mapa de bits correctamente?
- Android - Rellena el camino parcialmente
- Opengl es 2.0 dibujar superposición de mapa de bits en vídeo
- Android - dibujar mapa de bits dentro de la lona
- Creación de un mapa de bits vacío y dibujo a través de lienzo en android
- Cómo guardar bitmap de GLSurfaceView (Sólo bitmap, no toda la textura)
- ¿Por qué setImageBitmap no tiene efecto en ImageButton personalizado?
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í
- La aplicación es incompatible con todos tus dispositivos
- Error al recibir el problema de intento de difusión