Heim > Datenbank > MySQL-Tutorial > Wie kann man Bilder effektiv aus einem Datenbank-Blob speichern und abrufen?

Wie kann man Bilder effektiv aus einem Datenbank-Blob speichern und abrufen?

Mary-Kate Olsen
Freigeben: 2024-11-16 18:28:02
Original
880 Leute haben es durchsucht

How to Effectively Store and Retrieve Images from a Database Blob?

Bild im Datenbank-Blob speichern und zur Anzeige abrufen

Problem

Das Speichern und Abrufen von Bildern aus einer Datenbank ist eine häufige Aufgabe in der Programmierung. Obwohl es einfach erscheinen mag, können Probleme auftreten, wenn der Code nicht korrekt implementiert wird. In diesem Fall stieß ein Benutzer auf Probleme beim Speichern von Bildern in einer Datenbank und beim Anzeigen in einem Picturebox-Steuerelement.

Lösung

Um das Problem zu beheben, untersuchen wir den Code des Benutzers und identifizieren potenzielle Probleme:

Speichern in der Datenbank:

ImageStream = New System.IO.MemoryStream
PbPicture.Image.Save(ImageStream, System.Drawing.Imaging.ImageFormat.Jpeg)
ReDim rawdata(CInt(ImageStream.Length - 1))
Nach dem Login kopieren

Der Code kann nicht initialisiert werden Rohdaten mit den richtigen Abmessungen. Um die Bildbytes korrekt zu speichern, sollte sie neu dimensioniert werden, um sie an die Länge des Bildstreams anzupassen:

ReDim rawdata(CInt(ImageStream.Length))
Nach dem Login kopieren

Abrufen aus der Datenbank:

Dim ad As New System.IO.MemoryStream(100000)
Dim im As Image = Image.FromStream(ad) * "error occurs here" (see below)
Nach dem Login kopieren

Der Fehler entsteht, weil der Ad-Memory-Stream nicht richtig positioniert ist oder nicht genügend Kapazität hat. Der folgende Code behebt dieses Problem:

ad.Position = 0
Dim im As Image = Image.FromStream(ad)
Nach dem Login kopieren

Arbeitscode zum Speichern von Bildern in der Datenbank

Dim filename As String = txtName.Text + ".jpg"
Dim FileSize As UInt32

conn.Close()

Dim mstream As New System.IO.MemoryStream()
PbPicture.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()

FileSize = mstream.Length
Dim sqlcmd As New MySqlCommand
Dim sql As String
mstream.Close()

sql = "insert into [your table]  (picture, filename, filesize) 
                               VALUES(@File, @FileName, @FileSize)"

Try
    conn.Open()
    With sqlcmd
        .CommandText = sql
        .Connection = conn
        .Parameters.AddWithValue("@FileName", filename)
        .Parameters.AddWithValue("@FileSize", FileSize)
        .Parameters.AddWithValue("@File", arrImage)

        .ExecuteNonQuery()
    End With
Catch ex As Exception
    MsgBox(ex.Message)
Finally
    conn.Close()
End Try
Nach dem Login kopieren

Arbeitscode zum Abrufen von Bildern aus der Datenbank

Dim adapter As New MySqlDataAdapter
adapter.SelectCommand = Cmd

data = New DataTable

adapter = New MySqlDataAdapter("select picture from [yourtable]", conn)
commandbuild = New MySqlCommandBuilder(adapter)
adapter.Fill(data)

Dim lb() As Byte = data.Rows(0).Item("picture")
Dim lstr As New System.IO.MemoryStream(lb)
PbPicture.Image = Image.FromStream(lstr)
PbPicture.SizeMode = PictureBoxSizeMode.StretchImage
lstr.Close()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man Bilder effektiv aus einem Datenbank-Blob speichern und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage