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

VB.NET Discussion :

Afficher une image d'un champ BLOB de bdd dans un picturebox


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de zarohn
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 148
    Points : 94
    Points
    94
    Par défaut Afficher une image d'un champ BLOB de bdd dans un picturebox
    Bonjour,

    Je fais une appli VB > Oracle et j'ai fait une procédure de remplissage d'un combobox avec une requête sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub remplirDGV(ByRef dgv As DataGridView, ByVal strSQL As String)
            Try
                dgv.DataSource = retourneDS(strSQL).Tables("info")
            Catch ex As Exception
                MessageBox.Show("Impossible de remplir la liste. " & ex.Message)
            End Try
        End Sub
    Jusque la tout va bien, ca fonctionne et ca me permet de faire des appels du type :

    remplirDGV(dgv_MonDatagrid, "select champ1, champ2 from table where pk = maPk")
    Maintenant dans une autre de mes table j'ai un champ BLOB qui contient des images et j'aimerai faire le même genre de procédure afin de remplir un picturebox en faisant un appel du type :

    remplirPI(pi_MonPictureBox, "select champImage from table where pk = maPk")
    J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      Public Sub remplirPI(ByRef pi As PictureBox, ByVal strSQL As String)
            Dim ds As DataSet = New DataSet("info")
            Dim oleCom As OracleCommand
            Dim Oleda As New OracleDataAdapter
     
            oleCom = New OracleCommand(strSQL, orclConnexion)
            Oleda.SelectCommand = oleCom
            ds.Clear()
            Oleda.Fill(ds, "info")
            pi.Image = ds.Tables("info").Rows(0).Item("ima_image")
        End Sub
    mais j'obtiens l'erreur :

    Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'.
    Voila si quelqu'un pouvait m'aider ce ce serait sympa

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Hello!
    Créer un MemoryStream, le remplir avec ton contenu (ton byte[]) et utiliser le constructeur de System.Drawing.Bitmap qui prend un stream ( cf ici )

  3. #3
    Membre régulier Avatar de zarohn
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 148
    Points : 94
    Points
    94
    Par défaut
    Merci
    Mais pourriez vous m'en dire un peu plus svp ?

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub remplirPI(ByRef pi As PictureBox, ByVal strSQL As String)
            Dim ds As DataSet = New DataSet("info")
            Dim oleCom As OracleCommand
            Dim Oleda As New OracleDataAdapter
            Dim stmBLOBData As New System.IO.MemoryStream
     
            oleCom = New OracleCommand(strSQL, orclConnexion)
            Oleda.SelectCommand = oleCom
            ds.Clear()
            Oleda.Fill(ds, "info")
            stmBLOBData = ds.Tables("info").Rows(0).Item("ima_image")
            pi.Image = Image.FromStream(stmBLOBData)
        End Sub
    Mais ca ne fonctionne pas j'ai encore une erreur
    Merci d'avance

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Je connais qu'en C# mais ca donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var stmBLOBData =  new System.IO.MemoryStream();
    byte[] buffer = ds.Tables["info"].Rows[0].Item["ima_image"];
    stmBLOBData.Write(buffer, 0, buffer.Length);
    pi.Image = new System.Drawing.Bitmap(stmBLOBData);
    Pas testé mais devrait fonctionner.

  5. #5
    Membre régulier Avatar de zarohn
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 148
    Points : 94
    Points
    94
    Par défaut
    Oui ton idée était bien la bonne. Et pour la mettre en place en VB j'ai fait comme expliqué sur cette page, et ça fonctionne nickel :
    convert datatable byte array to image



    Merci PitMaverick78

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Avec plaisir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] Problème d'affichage php odbc d'une image stockée en champ blob
    Par caro384 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/07/2012, 11h58
  2. [SQL-Server] comment afficher une image à partire d'un Blob sql server
    Par assousoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/09/2010, 22h46
  3. Afficher une image à partir d'un Blob
    Par reeda dans le forum JSF
    Réponses: 22
    Dernier message: 17/07/2009, 09h59
  4. [MySQL] Afficher un image d'un champ BLOB
    Par bidulette dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/09/2006, 18h34
  5. [MySQL] Afficher une image d'un champ blob d'une base MySQL
    Par lolobedo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/11/2005, 10h10

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