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 :

Problème sauvegarde image depuis une ImageView


Sujet :

Android

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 1
    Par défaut Problème sauvegarde image depuis une ImageView
    Bonjour,

    Je m'en remets à vous car j'ai un problème j'essaie de sauvegarder l'image contenue de l'ImageView nommé avatar dans la carte sd du téléphone.
    Dans le but de pouvoir la récupérer l'image dans une autre activité.

    Voici le code :

    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
     
    private void  createImageFile() {
     
            BitmapDrawable draw = (BitmapDrawable) avatar.getDrawable();
            Bitmap bitmap = draw.getBitmap();
            try {
                FileOutputStream outStream = null;
                File sdCard = Environment.getExternalStorageDirectory();
                File dir = new File(sdCard.getAbsolutePath() + "/test");
                dir.mkdirs();
                String fileName = String.format("%d.jpg", System.currentTimeMillis());
                File outFile = new File(dir, fileName);
                outStream = new FileOutputStream(outFile);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                outStream.flush();
                outStream.close();
     
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
     }
    Le problème est que j'ai ce message d'erreur :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    java.lang.IllegalStateException: Could not execute method for android:onClick
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
            at android.view.View.performClick(View.java:6597)
            at android.view.View.performClickInternal(View.java:6574)
            at android.view.View.access$3100(View.java:778)
            at android.view.View$PerformClick.run(View.java:25885)
            at android.os.Handler.handleCallback(Handler.java:873)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
         Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invoke(Native Method)
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
            at android.view.View.performClick(View.java:6597)*
            at android.view.View.performClickInternal(View.java:6574)*
            at android.view.View.access$3100(View.java:778)*
            at android.view.View$PerformClick.run(View.java:25885)*
            at android.os.Handler.handleCallback(Handler.java:873)*
            at android.os.Handler.dispatchMessage(Handler.java:99)*
            at android.os.Looper.loop(Looper.java:193)*
            at android.app.ActivityThread.main(ActivityThread.java:6669)*
            at java.lang.reflect.Method.invoke(Native Method)*
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)*
         Caused by: java.lang.ClassCastException: android.graphics.drawable.AdaptiveIconDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
            at fr.centos.app1.MainActivity.createImageFile(MainActivity.java:197)
            at fr.centos.app1.MainActivity.ajouterPersonne(MainActivity.java:167)
            at java.lang.reflect.Method.invoke(Native Method)*
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)*
            at android.view.View.performClick(View.java:6597)*
            at android.view.View.performClickInternal(View.java:6574)*
            at android.view.View.access$3100(View.java:778)*
            at android.view.View$PerformClick.run(View.java:25885)*
            at android.os.Handler.handleCallback(Handler.java:873)*
            at android.os.Handler.dispatchMessage(Handler.java:99)*
            at android.os.Looper.loop(Looper.java:193)*
            at android.app.ActivityThread.main(ActivityThread.java:6669)*
            at java.lang.reflect.Method.invoke(Native Method)*
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)*
    D'après Android Studio l'erreur vient de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BitmapDrawable draw = (BitmapDrawable) avatar.getDrawable();
    Si quelqu'un a une idée de comment régler le problème ou une autre solution pour récupérer l'image je suis preneur.

    Merci.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Le message est clair , tu ne peux pas caster en Bitmapdrawable ce que te retourne getDrawable()Ce que tu veux faire n'a pas de sens pour moi. Tu veux récupérer une image depuis une imageview , pour la sauvegarder sur le disque pour la récupérer après alors :
    ce que tu place dans l'image view tu y'as forcément déjà accès dans ton code d'une manière ou d'une autre (l'imageview ne se peuple pas par magie). Une fois récuéprer il suffit de la transférer entre activity via Parcelable plutôt que d'écrire sur le disque. La seule raison valable d'écrire sur le disque c'est de persister quelques chose.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Enregistrer une image depuis une url
    Par joeyinbox dans le forum Windows
    Réponses: 2
    Dernier message: 23/10/2006, 20h00
  2. Problème d'affichage d'image depuis une pseudo-frames
    Par kriss_87 dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2006, 22h39
  3. Problème d'accès depuis une application
    Par Cédric_07 dans le forum Access
    Réponses: 5
    Dernier message: 24/05/2006, 10h21
  4. [C#] Comment inserer Image depuis une ressource ?
    Par EagleEye dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/01/2006, 13h09
  5. [C#] Récupération d'une image depuis une table SQL Server
    Par borgfabr dans le forum Accès aux données
    Réponses: 10
    Dernier message: 08/04/2004, 13h20

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