IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Enregistrer une photo en JPG dans le bon sens ?


Sujet :

Android

  1. #1
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut Enregistrer une photo en JPG dans le bon sens ?
    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.

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Comment faire pour sauver mon image dans le bon sens (on ne peut pas préciser de metadata (indiquant l'orientation) dans bitmap.compress().
    Essaye de regarder ce tutoriel , je n'ai pas essayé mais cela devrait être intéressant.
    http://achorniy.wordpress.com/2010/0...using-intents/

    Sinon j'avais vu qu'il existait une méthode à partir de l'API 10
    http://stackoverflow.com/questions/2...store-action-i


    Edit : Après si tu veux créer ta propre caméra

    Il faut que tu sauvegardes dans quel état à était pris l'image , ensuite lorsque tu obtiens l'image il faut la tourner dans le bon sens en fonction de l'orientation qu'elle avait. Il faut que tu récupère l'orientation en 0-90-180-270 grâce au capteur ensuite sauvegarde l'état et tourne la bitmap en fonction de l'orientation obtenue précédemment.

    Sinon si tu es au dessus de l'API 8

    http://stackoverflow.com/questions/3...110406#5110406

    Il me semble également qu'une fonction existe SetRotation
    http://developer.android.com/referen...tRotation(int) mais cela te tournera la caméra dont l'image ( si tu n'as pas fixé la caméra préalablement, en dessous de l'API 5 il faut vérifier dans les paramètres de la caméra si rotation existe et si ou la modifier à la "main"
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parametre.set("rotation", 90);
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Eh bien, merci beaucoup pour tous ces liens !
    J'ai quelques tâches à faire avant de résoudre ce problème, je pense que ça va beaucoup m'aider. Merci.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/04/2014, 12h45
  2. [MySQL] récupérer le nom d'une photo pour insertion dans BDD
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/06/2009, 19h40
  3. enregistrer une plage de cellules dans un autre fichier
    Par Kiphrine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2009, 10h14
  4. [AC-2003] Afficher la photo "blank.jpg" dans état lorsque le champ est vide
    Par fins51 dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/05/2009, 13h37
  5. enregistrer une valeur > 250 caractère dans un champ
    Par zidenne dans le forum Administration
    Réponses: 4
    Dernier message: 04/09/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo