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

Windows Forms Discussion :

[C#] Comment récuperer l image d un picture box


Sujet :

Windows Forms

  1. #1
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut [C#] Comment récuperer l image d un picture box
    Bonjour

    dans une fenetre j ai un picture box, avac une image dedans
    dasn une classe, j ai ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private Byte[] fi_Jacquette;
     
            public Byte[] Fi_Jacquette
            {
                get { return fi_Jacquette; }
                set { fi_Jacquette = value; }
            }
    comment mettre l image de mon picturebox dans fi_Jacquette ?
    car ca il n en veut pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _AjoutFilm.fi_Jacquette = pctBoxCover.Image;
    merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Pourquoi un tableau de bytes pour Fi_Jacquette, et pas Image ?

  3. #3
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    effectivement avec image y a plus d erreur

    mais plus loin je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                String _strSql = "INSERT INTO Films ( FI_Num, FI_Titre, FI_Annee_sortie, FI_Date_Parution, FI_Date_Achat, FI_Duree, FI_Zone, FI_Realisateur, FI_Studio, FI_Genre, FI_Resume, FI_Modif_Date, FI_Modif_Qui, FI_Jacquette)"
                                         + " VALUES ( @FI_Num, @FI_Titre, @FI_Annee_sortie, @FI_Date_Parution, @FI_Date_Achat, @FI_Duree, @FI_Zone, @FI_Realisateur, @FI_Studio, @FI_Genre, @FI_Resume, @FI_Modif_Date, @FI_Modif_Qui, @FI_Jacquette);";

    puis je passe tous les param et celui la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                            DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
                            FI_Jacquette.Value = this.fi_Jacquette;
                            cmd.Parameters.Add(FI_Jacquette);

    puis ca

    et la ca pars en erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    +		$exception	{"Échec de la conversion de la valeur de paramètre d'un Bitmap en un Byte[]."}	System.Exception {System.InvalidCastException}
    Dans ma table la colonne FI_Jacquette et de type Objet OLE

    comment faire ?

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il faut que ici:

    FI_Jacquette.Value = this.fi_Jacquette;


    tu transfomes fi_Jacquette en tableau de byte avant de l'assigner

  5. #5
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    mais tu m as dis de mettre image et non bytes alors j ai fait ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private Image fi_Jacquette;
     
            public Image Fi_Jacquette
            {
                get { return fi_Jacquette; }
                set { fi_Jacquette = value; }
            }

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Oui, masi c'est ici:

    DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
    FI_Jacquette.Value = this.fi_Jacquette;
    cmd.Parameters.Add(FI_Jacquette);

    Que tu dois travailler avec/sur this.fi_Jacquette pour le convertir, lors de l'affectation, en tableau de bytes

  7. #7
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    je fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
                            FI_Jacquette.Value = Convert.ToByte( this.fi_Jacquette);
                            cmd.Parameters.Add(FI_Jacquette);
    mais ca plante evec comme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    +		$exception	{"Impossible d'effectuer un cast d'un objet de type 'System.Drawing.Bitmap' en type 'System.IConvertible'."}	System.Exception {System.InvalidCastException}

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    Ca serait pas mieu de stocker le chemin des images dans ta base plustot que de stocker toute l'image ?

  9. #9
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ca serait pas mieu de stocker le chemin des images dans ta base plustot que de stocker toute l'image ?

    Pas dans ce cas, sinon mon appli ne seras plus transportable d un pc a l autre

  10. #10
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    J arrives tjrs pas a récuperer mon image en base

  11. #11
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    this.fi_Jacquette, c'est le membre privé de ta classe .

    Dans ce cas, pourquoi le convertir en byte alors que normalent, c'est deja un tableau de byte ?

  12. #12
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Mais je ne la convertis pas en Byte, puisque hier tu m as fait changer pour mettre ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private Image fi_Jacquette;
     
            public Image Fi_Jacquette
            {
                get { return fi_Jacquette; }
                set { fi_Jacquette = value; }
            }
    Comment faudrait faire ?

  13. #13
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Y a pas de solution ????

  14. #14
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Ben, quand je vois ca

    Convert.ToByte( this.fi_Jacquette);

    Je me dis que tu convertis bien en tableau de byte....

  15. #15
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    mais non, regarde mon message du 31 a 18h33, je l ai fait, et ca plante

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Si on ramène le problème à la conversion d'une image en Byte[], il faut à mon avis passer par un MemoryStream.

    On utilise Image.Save pour placer l'image dans le MemoryStream et ensuite MemoryStream.ToArray pour récupérer un tableau Byte[].

    Ensuite, l'opération inverse peut se faire en utilisant le constructeur MemoryStream(Byte[]) et Image.FromStream

  17. #17
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Je repose le pb car rien n y fait

    Bonjour

    J ai besoin d’aide pour finaliser ma petite appli

    Voila, je recupere les infos via le net, tout marche bien sauf pour mettre l image en base,
    Je recois l image dans un Picture box sur ma form et je passe tout a ma classe


    Toutes les autres infos (titre, acteurs etc…) passent bien sauf l’image
    Voici ce que je fais pour passer les infos a la classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                   _AjoutFilm.Fi_Resume = meSummary.Text;
                    _AjoutFilm.Fi_Modif_Qui = Environment.UserName;
                    _AjoutFilm.Fi_Modif_Date = DateTime.Today;
                    _AjoutFilm.Fi_Date_Achat = DateTime.Today;
                    _AjoutFilm.Fi_Zone = "2 - Europe, Japan, S. Africa, Middle East";
     
                                              // Pour l image
                    _AjoutFilm.Fi_Jacquette = pctBoxCover.Image;
    Et dans la classe je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private Image fi_Jacquette;
     
            public Image Fi_Jacquette
            {
                get { return fi_Jacquette; }
                set { fi_Jacquette = value; }
            }
    Puis ca pour mettre en base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // la requete
                String _strSql = "INSERT INTO Films ( FI_Num, FI_Titre, FI_Annee_sortie, FI_Date_Parution, FI_Date_Achat, FI_Duree, FI_Zone, FI_Realisateur, FI_Studio, FI_Genre, FI_Resume, FI_Modif_Date, FI_Modif_Qui, FI_Jacquette)"
                                         + " VALUES ( @FI_Num, @FI_Titre, @FI_Annee_sortie, @FI_Date_Parution, @FI_Date_Achat, @FI_Duree, @FI_Zone, @FI_Realisateur, @FI_Studio, @FI_Genre, @FI_Resume, @FI_Modif_Date, @FI_Modif_Qui, @FI_Jacquette);";
     
    Puis ca pour le parma de la jaquette
                            DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
                            FI_Jacquette.Value = this.fi_Jacquette;
                            cmd.Parameters.Add(FI_Jacquette);

    et enfin ca pour enregsitrer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                            cn.Open();
                            cmd.ExecuteNonQuery();
    si je mets en commentaire tout ce qui touche a la jaquette, ca marche nickel
    j ai essayé ca aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                            DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
                            FI_Jacquette.Value = Convert.ToByte(this.fi_Jacquette);
                            cmd.Parameters.Add(FI_Jacquette);
    mais rien n y fait

    Merci de votre aide

  18. #18
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Bon j ai rajouté ca, ca compile bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                           byte[] tab;
                            tab = (byte[])TypeDescriptor.GetConverter(typeof(Byte)).ConvertTo(this.fi_Jacquette, typeof(byte[]));
     
                            DbParameter FI_Jacquette = new OleDbParameter("@FI_Jacquette", OleDbType.Binary);
                            FI_Jacquette.Value = tab;
                            cmd.Parameters.Add(FI_Jacquette);

    Au moment de l ecriture en base

    ca plante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -                              $exception         {"Type de données incompatible dans l'expression du critère."}             System.Exception {System.Data.OleDb.OleDbException}
    personne n a le remède pour moi ???

  19. #19
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Y a pas de solution en C# ????

  20. #20
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    Ce n'est hélas toujours pas résolu

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] [C#]Charger une image dans une picture box
    Par Pas_d_Idee dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/09/2012, 02h05
  2. comment récuperer l'image du panel
    Par owenho dans le forum Ext JS / Sencha
    Réponses: 4
    Dernier message: 21/07/2012, 22h02
  3. Oracle et BLOB pour image dans un picture Box
    Par gueulederack dans le forum VB.NET
    Réponses: 4
    Dernier message: 13/09/2011, 16h21
  4. Afficher une image danx un picture box
    Par france38 dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 28/01/2007, 18h36
  5. Comment récuperer une image d'un avi ?
    Par lil_jam63 dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2004, 20h34

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