Feedback

VB - Bild als XML Datei Speichern

Veröffentlicht von am 24.01.2008
(1 Bewertungen)
Manchmal ist nötig, Bilder im einem String zu speichern und wieder auszulesen - Beispielsweise dann, wenn der eingestzte Datenbankserver keine Images o.a. speichern kann.

Im folgenden Beispiel eine Klasse zum serialisieren und ein Beispiel zur Verwendung dieser Klasse.
GFU-Schulungen  [Anzeige]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

'Zuerst einmal die Klasse
Public Class clsSerialize

    Public objImage As Object

    <Xml.Serialization.XmlIgnore()> _
    Public Property Image() As Image
        Get

            Dim strToByte() As Byte
            strToByte = objImage
            Return Image.FromStream(New System.IO.MemoryStream(strToByte))

        End Get
        Set(ByVal Value As Image)

            Dim msMemoryStream As New System.IO.MemoryStream()

            Value.Save(msMemoryStream, System.Drawing.Imaging.ImageFormat.Png)
            Dim myByte(msMemoryStream.Length - 1) As Byte
            msMemoryStream.Position = 0 : msMemoryStream.Read(myByte, 0, msMemoryStream.Length)
            objImage = myByte
        End Set
    End Property



End Class

'Gehen wir nun zum Aufruf.
'Imn diesem Beispiel existiert ein Formular
'mit einer Picturebox und 3 Buttons


Imports System
Imports System.Drawing
Imports System.Xml.Serialization
Imports System.Xml


Public Class Form1


    Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
        Dim ofd As New OpenFileDialog
        With ofd
            .ShowDialog()
            If .FileName <> "" Then
                Me.PictureBox1.Image = Image.FromFile(ofd.FileName)
            End If
        End With
    End Sub

    Private Sub btnSaveToXml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveToXml.Click
        Dim dlgSave As New SaveFileDialog
        With dlgSave
            .AddExtension = True
            .Filter = "XML|*.xml"
            .DefaultExt = "xml"
            .InitialDirectory = My.Application.Info.DirectoryPath
            .ShowDialog()
            Try
                If .FileName <> "" Then
                    Dim Serialize As New clsSerialize()
                    Serialize.Image = Me.PictureBox1.Image
                    Dim serializer As New Xml.Serialization.XmlSerializer(GetType(clsSerialize))
                    Dim xmlWriter As New XmlTextWriter(.FileName, System.Text.Encoding.UTF8)
                    xmlWriter.Formatting = Formatting.Indented
                    serializer.Serialize(xmlWriter, Serialize)
                    xmlWriter.Close()
                    MessageBox.Show("Serialization Complete", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End With
    End Sub



    Private Sub btnReadFromXML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadFromXML.Click
        Dim ofd As New OpenFileDialog
        With ofd
            Dim deSerialize As clsSerialize
            Dim deSerializer As New Xml.Serialization.XmlSerializer(GetType(clsSerialize))
            .ShowDialog()
            If .FileName <> "" Then
                deSerialize = deSerializer.Deserialize(New XmlTextReader(.FileName))
                Me.PictureBox1.Image = deSerialize.Image
            End If
        End With
    End Sub
End Class
Abgelegt unter XML, Serialisieren.

1 Kommentare zum Snippet

Günther Foidl schrieb am 24.09.2008:
Ein Bild kann auch direkter in einen Base64-String gewandelt werden. Der Umweg über die XML-Serialisation ist nicht nötig. Ein C#-Snippet ist unter http://dotnet-snippets.de/dns/image-zu-base64-konvertieren-und-zurueck-SID958.aspx zu finden.
 

Logge dich ein, um hier zu kommentieren!