Próbuję napisać User_Comment
i TAG_GPS
do przechwyconego obrazu w aplikacji dla systemu Android przy użyciu interfejsu exif, ale z jakiegoś powodu znaczniki nie wydają się być dołączane do obrazu po wyświetleniu szczegółów obrazu w galerii .Jak zapisywać dane exif do obrazu w systemie Android?
Wygląda na to, że znaczniki nie są zapisywane na przechwyconym obrazie, ponieważ ścieżka do pliku może być niepoprawna. Myślę, że to możliwe, ponieważ napisałem tagi do niewłaściwej ścieżki obrazu.
Czy ktoś wie, czy jest to problem ze sposobem, w jaki piszę tagi do obrazu?
Jest to kod, który zapisuje dane EXIF następujące @ zmian Charliego poniżej:
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;
}
dlaczego często wywołujesz exif.saveAttributes? Uważam, że za każdym razem tworzy nowy obraz. Zastanawiam się, – wkhatch
Jest to możliwe, nie pracowałem nad tym projektem od jakiegoś czasu, myślę, że problem mógł być, że dane są zapisywane do obrazu tymczasowego o nazwie "exif" i nigdy nie są zapisywane na oryginalnym obrazie. –