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

Développement Windows Discussion :

Probleme Insert Mysql Image PNG [Débutant]


Sujet :

Développement Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut Probleme Insert Mysql Image PNG
    Bonjour,

    Je fais un post dédier a mon problème.
    J'essai de mettre des images dans mysql certaines passent correctement d'autre pas du tout.
    Que cela soit en jpg ou png.

    Si un modo peux reduire l'image, merci............

    Certaines coupé d'autre pas..........
    Exemple jpg enregistré
    Nom : Sans titre-3.jpg
Affichages : 393
Taille : 100,0 Ko

    Exemple Png et son original
    Nom : Sans titre-4.png
Affichages : 369
Taille : 36,9 Ko

    orginal
    Nom : green-arrows.png
Affichages : 572
Taille : 280,2 Ko

    Mon 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
    24
    25
    26
    27
        Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
            Dim cmd As New MySqlCommand
            Dim SQL As String
            Dim FileSize As UInt32
            Dim rawData() As Byte = IO.File.ReadAllBytes(ListBox1.SelectedItem)
            Dim fs As FileStream
            Try
                fs = New FileStream(ListBox1.SelectedItem.ToString, FileMode.Open, FileAccess.Read)
                FileSize = fs.Length
                rawData = New Byte(FileSize) {}
                fs.Read(rawData, 0, FileSize)
                fs.Close()
                MysqlConn.Open()
                SQL = "INSERT INTO xcollectibles.foto (foto) VALUES(@foto)"
                cmd.Connection = MysqlConn
                cmd.CommandText = SQL
                cmd.Parameters.AddWithValue("@foto", rawData)
                cmd.ExecuteNonQuery()
     
                MessageBox.Show("File Inserted into database successfully!",
                "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                MysqlConn.Close()
            Catch ex As Exception
                MessageBox.Show("There was an error: " & ex.Message, "Error",
                        MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    peux-tu nous mettre la desc de la table qui contient le BLOB ?
    Le code concernant la lecture des BLOB pourrait également être intéressant.
    Enfin, as-tu essayé une sauvegarde sur disque après lecture ? Remarques-tu une différence de taille par rapport à l'originale ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    peux-tu nous mettre la desc de la table qui contient le BLOB ?
    Le code concernant la lecture des BLOB pourrait également être intéressant.
    Enfin, as-tu essayé une sauvegarde sur disque après lecture ? Remarques-tu une différence de taille par rapport à l'originale ?
    Je suis entrain de penser a peu etre reflechir a sauvegarder mes images dans un path du disque dur et envoyer le chemin dans mysql.
    Je reviens si j'ai des problemes.

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    [..] Enfin, as-tu essayé une sauvegarde sur disque après lecture ? Remarques-tu une différence de taille par rapport à l'originale ?
    Pour cette question il fallait comprendre : tu mets ton image dans ton BLOB, tu récupères la data du BLOB (ces deux phases se font avec ton code existant) et tu mets la bouillie d'octets dans un fichier sur disque, pour pouvoir comparer avec l'original (la taille, le hash, voire comparo byte à byte).
    Après, l'idée de mettre des fichiers en FS plutôt qu'en BLOB est intéressante si tu as beaucoup de fichiers (enfin surtout un gros volume), car ça peut faire tomber ton instance MySQL.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    Pour ce qui est du chemin ou sauvegarder dans un repertoire avec le code suivant.


    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
    Me.Cursor = Cursors.WaitCursor
            For i = 0 To Me.ListBox1.Items.Count - 1
                ProgressBar1.Maximum = Me.ListBox1.Items.Count - 1
                Me.ListBox1.SetSelected(i, True)
                Dim cmd As New MySqlCommand
                Dim SQL As String
                'Dim FileSize As UInt32
                Dim rawData() As Byte = IO.File.ReadAllBytes(ListBox1.SelectedItem)
     
     
                Dim mstream As New System.IO.MemoryStream()
                Dim arrImage() As Byte = mstream.GetBuffer()
                mstream.Close()
     
                System.IO.Directory.CreateDirectory("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text)
                Dim SaveFile As New System.IO.StreamWriter("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text)
     
                If TextBox1.Text = ".jpg" Then
                    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Jpeg)
                ElseIf TextBox1.Text = ".bmp" Then
                    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Bmp)
                ElseIf TextBox1.Text = ".png" Then
                    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Png)
                End If
     
                MysqlConn.Close()
     
                MysqlConn.Open()
                SQL = "INSERT INTO xcollectibles.foto (id_product,name,path) VALUES ((Select id from xcollectibles.product where product.name='" & ComboBox1.Text & "'), @name, @path) "
                ProgressBar1.Value = i
                cmd.Connection = MysqlConn
                cmd.CommandText = SQL
                cmd.Parameters.AddWithValue("@name", TextBox3.Text)
                cmd.Parameters.AddWithValue("@path", TextBox2.Text)
                cmd.ExecuteNonQuery()
            Next
            MessageBox.Show("File Inserted into database successfully!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            MysqlConn.Dispose()
            ProgressBar1.Value = 0
            Me.Cursor = Cursors.Default
    concrètement cette partie

    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
    Me.Cursor = Cursors.WaitCursor
            For i = 0 To Me.ListBox1.Items.Count - 1
                ProgressBar1.Maximum = Me.ListBox1.Items.Count - 1
                Me.ListBox1.SetSelected(i, True)
                Dim cmd As New MySqlCommand
                Dim SQL As String
                'Dim FileSize As UInt32
                Dim rawData() As Byte = IO.File.ReadAllBytes(ListBox1.SelectedItem)
     
     
                Dim mstream As New System.IO.MemoryStream()
                Dim arrImage() As Byte = mstream.GetBuffer()
                mstream.Close()
     
                System.IO.Directory.CreateDirectory("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text)
                Dim SaveFile As New System.IO.StreamWriter("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text)
     
                If TextBox1.Text = ".jpg" Then
                    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Jpeg)
                ElseIf TextBox1.Text = ".bmp" Then
                    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Bmp)
                ElseIf TextBox1.Text = ".png" Then
                    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Png)
                End If

    J'essai de faire qu'il sauvegarde dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images" & "\" & ComboBox1.Text & "\" & TextBox3.Text, System.Drawing.Imaging.ImageFormat.Jpeg)
    Mais sa fonction si je met de cette manière, évidement je veux éviter qu'il réécrive le meme fichier. D'ou l'essai de ma premiere méthode....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PictureBox1.Image.Save("C:\Users\Jamyz\Source\Repos\xCollectibles\xCollectibles\xCollectibles\Images\mon.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    ok c'est bon..............

    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
    45
    46
    47
    48
    49
    50
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Me.Cursor = Cursors.WaitCursor
            For i = 0 To Me.ListBox1.Items.Count - 1
                ProgressBar1.Maximum = Me.ListBox1.Items.Count - 1
                Me.ListBox1.SetSelected(i, True)
                Dim cmd As New MySqlCommand
                Dim SQL As String
                'Dim FileSize As UInt32
                Dim rawData() As Byte = IO.File.ReadAllBytes(ListBox1.SelectedItem)
     
     
                Dim mstream As New System.IO.MemoryStream()
                Dim arrImage() As Byte = mstream.GetBuffer()
                mstream.Close()
     
                'Save Image in Folder
                Dim strBasePath As String
                Dim strFileName As String
                strFileName = TextBox3.Text
                strBasePath = Application.StartupPath & "\Images" & ComboBox1.Text & "\"
                ' >> Check if Folder Exists 
                If Directory.Exists(strBasePath) = False Then
                        Call Directory.CreateDirectory(strBasePath)
                    End If
                ' >> Save Picture 
                If TextBox1.Text = ".jpg" Then
                    Call PictureBox1.Image.Save(strBasePath & "\" & strFileName, System.Drawing.Imaging.ImageFormat.Jpeg)
                ElseIf TextBox1.Text = ".png" Then
                    Call PictureBox1.Image.Save(strBasePath & "\" & strFileName, System.Drawing.Imaging.ImageFormat.Png)
                ElseIf TextBox1.Text = ".bmp" Then
                    Call PictureBox1.Image.Save(strBasePath & "\" & strFileName, System.Drawing.Imaging.ImageFormat.Bmp)
                End If
                'Save Image in Folder
     
                MysqlConn.Close()
                MysqlConn.Open()
                SQL = "INSERT INTO xcollectibles.foto (id_product,name,path) VALUES ((Select id from xcollectibles.product where product.name='" & ComboBox1.Text & "'), @name, @path) "
                ProgressBar1.Value = i
                cmd.Connection = MysqlConn
                cmd.CommandText = SQL
                cmd.Parameters.AddWithValue("@name", TextBox3.Text)
                cmd.Parameters.AddWithValue("@path", strBasePath)
                cmd.ExecuteNonQuery()
            Next
            MessageBox.Show("File Inserted into database successfully!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            MysqlConn.Dispose()
            ProgressBar1.Value = 0
            Me.Cursor = Cursors.Default
        End Sub

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

Discussions similaires

  1. [Zend_Pdf] Insertion d'images PNG
    Par manuscle dans le forum Autres composants
    Réponses: 0
    Dernier message: 26/03/2009, 15h37
  2. probleme insertion de date dans mysql
    Par alpking dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/11/2006, 14h12
  3. [VBA-E]probleme Insert image
    Par lolo_bob2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2006, 10h45
  4. [SGBD] [Problème insertion variable php/mysql]
    Par vincedjs dans le forum Installation
    Réponses: 20
    Dernier message: 08/02/2006, 16h41
  5. probleme insertion images
    Par kojima dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/12/2005, 22h30

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