Picturebox.image als String in Variable ablegen (Serializieren) und wieder zurück

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von dive26.

    Picturebox.image als String in Variable ablegen (Serializieren) und wieder zurück

    Hallo Leute!

    Da ich für meine Benutzerdaten in der Datenbank auch immer ein kleines Bild (wirklich nur sehr klein) mitspeichern möchte, würde ich gernde den Bildinhalt einer Picturebox in einen String umwandeln (z.B. serialisieren) um dann diesen String einfach handhaben zu können.

    Gibt es also einen wirklich kurzen Code, mit dem ich das hinbekommen kann?

    VB.NET-Quellcode

    1. DIM BildString as String
    2. 'Speichern
    3. picturebox.Image = System.Drawing.Image.FromFile("filename.jpg")
    4. BildString = MachirgendwasMit(picturebox.Image)
    5. 'Laden
    6. picturebox.Image = MachIrgendwasAnderes(BildString )


    Ich habe viele Beispile mit Filestream gefunden, aber ich möchte nicht in Dateien abspeichern, sonden nur in Strings.

    Ich weis jetzt, dass Picturebox aus Bytes besteht. Aber das ist nicht die Frage.

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Ich weis jetzt, dass Picturebox aus Bytes besteht. Aber das ist nicht die Frage.



    Dann versuch ichs trotzdem vielleicht hilfts dir.

    Speichere das Bild der Picturebox als Bytes in ein Byte Array und lese diese Bytes wieder aus.
    Hab das auch einmal umgesetzt ich such kurz nach nem "Codeschnipsel."

    EDIT://

    VB.NET-Quellcode

    1. Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    2. Dim n As New News
    3. Dim str As System.IO.Stream = FileUpload1.FileContent
    4. Dim buf(CInt(FileUpload1.FileContent.Length)) As Byte
    5. str.Read(buf, 0, CInt(FileUpload1.FileContent.Length))
    6. n.imageNews = buf
    7. End Sub


    Das ganze habe ich in einer Webanwendung realisiert. Das Bild wurde aus einem FileUpload (Control) ausgewählt.
    Und danach als Bytes in "imageNews" abgespeichert. Public Property imageNews() As Byte() Ich habe mit SQL Server 2012 gearbeitet und der Datentype von "imageNews" war/ist "IMAGE".

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Lingo“ ()

    Danke xtts02,
    das war genau das was ich gesucht habe.

    Nun bräuchte ich nur noch eine schnelle Möglichkeit das Bild der PictureBox auf die Abmessungen der Picturebox zu reduzieren (falls ein Benutzer ein Riesenbild reinlädt). Die SizeMode ist auf "StretchImage" gestellt.

    Habs bereits selbst herausbekommen:

    VB.NET-Quellcode

    1. 'Dieser Code verkleinert den Inhalt der Picturebox auf die exakte Breite der Picturebox in der Form
    2. Public Sub SizeImage(ByRef pb As PictureBox)
    3. Dim imgSize As Size = pb.Image.Size()
    4. Dim imgContainer As Size = pb.Size
    5. If imgSize.Width > imgContainer.Width Or imgSize.Height > imgContainer.Height Then
    6. Dim Scale As Single = (imgContainer.Width / imgSize.Width)
    7. Dim hBitmap As New Bitmap(pb.Image)
    8. Dim NewBitmap As New Bitmap(CInt(hBitmap.Width * Scale), CInt(hBitmap.Height * Scale))
    9. Dim hGraphics As Graphics = Graphics.FromImage(NewBitmap)
    10. hGraphics.DrawImage(hBitmap, 0, 0, NewBitmap.Width + 1, NewBitmap.Height + 1)
    11. pb.Width = NewBitmap.Width
    12. pb.Height = NewBitmap.Height
    13. pb.Image = NewBitmap
    14. End If
    15. End Sub


    Ihr seid die Besten :thumbsup:
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dive26“ ()