MISE À JOUR
Exif est un format de fichier qui insère des données d'information au format JPEG. https://www.media.mit.edu/pia/Research/deepview/exif.html
Et Bitmap
est donnée de données structior détient des données de pixel de ligne, pas d'info exif.
Donc, je pense qu'il est impossible d'obtenir des informations exif de Bitmap
.
Il n'y a pas de méthode pour obtenir des infos exif.
https://developer.android.com/reference/android/graphics/Bitmap.html
ORIGINAL
Je suis d'accord avec @DzMobNadjib. Je pense que l'info de rotation est seulement en exif. Pour prendre exif, je vous recommande de prendre les mesures suivantes.
1. Démarrez l'activité de la caméra avec le chemin du fichier.
Voir [Enregistrer la photo dans sa taille] capture de .
Vous pouvez démarrer l'activité de la caméra avec le chemin du fichier. L'activité de la caméra enregistre l'image dans le chemin du fichier que vous avez passé.
2. Dans 'onActivityResult', Suivre this answer (comme suggéré @DzMobNadjib)
Votre code sera comme ceci:
(Désolé, je ne suis pas testé S'il vous plaît lire carefuly et suivre la réponse ci-dessus.)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == Constants.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
Uri uri = data.getData();
Bitmap bitmap = getAdjustedBitmap(uri);
}
}
}
private Bitmap getAdjustedBitmap(Uri uri) {
FileInputStream is = null;
try {
ExifInterface exif = new ExifInterface(uri.getPath());
int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
int rotationInDegrees = exifToDegrees(rotation);
Matrix matrix = new Matrix();
if (rotation != 0f) {
matrix.preRotate(rotationInDegrees);
}
is = new FileInputStream(new File(uri.getPath()));
Bitmap sourceBitmap = BitmapFactory.decodeStream(is);
int width = sourceBitmap.getWidth();
int height = sourceBitmap.getHeight();
return Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
}
return null;
}
private static int exifToDegrees(int exifOrientation) {
if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) { return 90; }
else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) { return 180; }
else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) { return 270; }
return 0;
}
double possible de [pourquoi l'image capturée à l'aide l'intention de la caméra se fait tourner sur certains appareils Android en] (http://stackoverflow.com/questions/14066038/why-image-captured-using-camera-intent- obtient-tourné-sur-certains-appareils-dans-android) –
@Mik elPascual cette question doest spécifier comment obtenir exif d'un bitmap c'est ce que j'ai dit dans op –
Vous pouvez voir cette [réponse] (http://stackoverflow.com/a/11081918/5061288), je pense que c'est utile. –