Comment écrire des données exif à l'image sous Android?
Je suis en train d'écrire un User_Comment
et TAG_GPS
à une image capturée dans une application Android à l'aide de l'exif de l'interface, mais pour une raison quelconque, les balises ne semblent pas être ajoutée à l'image quand j'ai vue l'image dans la galerie.
Il semble que peut-être que les balises ne sont pas écrites à l'image capturée comme le chemin d'accès au fichier trompe peut-être. Je pense qu'il pourrait être parce que j'ai écrit les balises d'un mauvais chemin de l'image.
Personne ne sait si y a un problème avec la façon dont je suis en train d'écrire les balises à l'image?
C'est le code qui enregistre les données exif suivant @Charlie changements ci-dessous:
private File getOutputPhotoFile() throws IOException {
File directory = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), getPackageName());
if (!directory.exists()) {
if (!directory.mkdirs()) {
Log.e(TAG, "Failed to create storage directory.");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
File[] files = directory.listFiles();
File exifVar = new File(directory.getPath(), "IMG_" + timeStamp + ".jpg");
if(files.length!=0) {
File newestFile = files[files.length-1];
exifVar = new File(directory.getPath() + File.separator + newestFile.getName());
}
String mString = "Generic Text..";
ExifInterface exif = new ExifInterface(exifVar.getAbsolutePath());
exif.setAttribute("UserComment", mString);
exif.saveAttributes();
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
String.valueOf(latituteField.toString()));
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,
String.valueOf(longitudeField.toString()));
exif.saveAttributes();
return exifVar;
}
source d'informationauteur Brian J
Vous devez vous connecter pour publier un commentaire.
Vous utilisez
exifVar.toString()
. Cela renvoie simplement le nom de fichier, pas le chemin vers l'image. Que votre application n'est probablement pas dans le dossier avec des photos, vous devez utiliserexifVar.getAbsolutePath()
.Si vous n'êtes pas de prendre la photo en même temps, vous êtes en cours d'exécution du programme, le Chemin ne sera pas bon. Utilisez ce code à la place:
Hors-Sujet:
Selon votre énorme liste d'importation:
importations
Qui rend votre code un peu plus courte. Juste pour dire
Vous devez d'abord copier les informations exif des fichiers se trouvant ici google exif à votre projet, puis utiliser le code suivant :
ExifInterface utilisée ici est la nouvelle que vous venez d'ajouter.