Salut,

J'ai une activité toute simple, qui possède deux boutons ("camera" et "gallery"). Quand je clique sur "camera", je peux prendre une photo, elle est sauvée sur la carte sd, et l'activité l'affiche dans un imageView. Quand je clique sur "gallery", je peux choisir une photo déjà existante.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void cameraButtonClicked(View v) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, REQUEST_CODE_CAMERA);
}
 
...
 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
        case REQUEST_CODE_CAMERA:
            Bitmap bitmap = (Bitmap) data.getExtras().get("data");
            try {
                // Save the image on sdcard
                ImageManager.saveImage(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
            imageViewer.setImageBitmap(bitmap);
            break;
        //...
        }
    }
}
Et dans ImageManager.saveImage(bitmap), en gros je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
bitmap.compress(CompressFormat.JPEG, 75, byteArrayOutputStream);
byte[] data = byteArrayOutputStream.toByteArray();
// puis j'écris data dans un fichier, le code n'a pas d'importance
Maintenant, si je fais, dans l'ordre :
- cliquer sur "camera", prendre une photo en portrait : la photo est sauvée puis affichée (en portrait) dans mon imageview
- cliquer sur "gallery", puis choisir la photo que je viens juste de prendre à l'étape précédente : la photo récupérée est en paysage (tournée, donc)

Comment faire pour sauver mon image dans le bon sens (on ne peut pas préciser de metadata (indiquant l'orientation) dans bitmap.compress().

Merci de votre aide.