J'ai besoin de lire quelques propriétés Exif
d'un Image
(pris avec le Camera
ou pris du Gallery
).données Android EXIF Image de l'appareil photo ou galerie perdue
Voici comment je lance le Camera
:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File file = new File(myObject.getLocalUrl());
Uri fileURI = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileURI);
startActivityForResult(intent, CAPTURE_IMAGE_REQUEST_CODE);
Voici comment je lance le Gallery
Picker
:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, getString(R.string.image_picker_select_image)), SELECT_IMAGE_FROM_GALLERY_REQUEST_CODE);
Le problème est que, par exemple, dans le premier cas (Camera
), après le Image
est pris et enregistré dans le External
Storage
, l'information Exif
se perdre.
La même chose pour le Images
pris dans le Gallery
. Voilà comment je reçois le Image
dans la méthode onActivityResult
:
Uri uri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
Et enfin voici comment je lis les données Exif
:
ExifInterface exifInterface = null;
try {
exifInterface = new ExifInterface(myObject.getLocalUrl());
} catch (IOException e) {
e.printStackTrace();
}
String exifOrientation = exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION);
String exifMake = exifInterface.getAttribute(ExifInterface.TAG_MAKE);
String exifModel = exifInterface.getAttribute(ExifInterface.TAG_MODEL);
J'ai essayé la prochaine:
- Prenez un
picture
en utilisant mon appareilCamera
(sans utiliser monApp
). Lire les donnéesExif
en utilisantExifInterface
. - Cela fonctionne comme un charme.
donc je suppose que le problème est que lorsque le Image
est sauvé (après il est pris avec le Camera
) ou Image
est prélevée du Gallery
, les données Exif
se perd.
J'ai lu au moins 20-30 post ici en Stackoverflow
mais fondamentalement le problème que tout le monde a est que le orientation
exif
l'information est perdue, de sorte que la solution est en train d'écrire le droit orientation
dans les Exif
données.
Cette solution n'est pas bien pour moi puisque je ne veux pas écraser les données Exif
, je veux juste lire l'original.
Des idées/indices? Merci.
'nouvelle ExifInterface (myObject.getLocalUrl());'. Qu'est-ce que myObject? Qu'est-ce que cela a à voir avec onActivityResult()? Mieux afficher le code complet. – greenapps
'Voilà comment j'obtiens l'image dans la méthode onActivityResult:'. Sans importance. N'a pas d'importance. Vous devriez nous montrer comment vous obtenez l'exif du fichier .jpg. – greenapps
'le problème que tout le monde a est que l'information exif d'orientation est perdue, de sorte que la solution écrit la bonne orientation dans les données Exif. Tout cela n'a aucun sens pour moi. Les fichiers JPG ne perdent pas d'informations exif. – greenapps