Dans le cadre d'une utilisation de WebService pour des Produits, il est pratique de pouvoir passer d'un fichier Image vers un fichier XML en Base 64 et de pouvoir faire le chemin inverse (pour le décodage).
-------- Précision après le message posté -----------
La base de travail pour cet classe est un article trouvé sur perfectXML que j'ai transformé en VB.NET et adapté sous forme de classe :
-
http://www.perfectxml.com/Answers.asp?ID=2
----------------------------------------------------------
Source / Exemple :
Imports System.Drawing
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization
Public Class FileToXML
' -----------------------------------------------------
Public Shared Function FileToXML(ByVal CheminFichier As String) As String
' Serialization: image to XML (base64)
Dim srcImage As Image = New Bitmap(CheminFichier)
Dim memStream As MemoryStream = New MemoryStream()
Dim strBuilder As StringBuilder = New StringBuilder()
srcImage.Save(memStream, System.Drawing.Imaging.ImageFormat.Gif)
Dim writerSerialized As StringWriter = New StringWriter(strBuilder)
Dim writerXMLText As XmlTextWriter = New XmlTextWriter(writerSerialized)
Dim serializerXML As XmlSerializer = New XmlSerializer(memStream.GetBuffer.GetType)
serializerXML.Serialize(writerXMLText, memStream.GetBuffer())
writerXMLText.Close()
Return strBuilder.ToString()
End Function
' -----------------------------------------------------
Public Shared Function XMLToFile(ByVal StreamXMLImage As String) As Image
' Deserialization: XML (base64) to image
Dim readerText As XmlTextReader = New XmlTextReader(New StringReader(StreamXMLImage))
Dim MonStream As MemoryStream = New MemoryStream()
Dim serializerXML As New XmlSerializer(MonStream.GetBuffer().GetType())
Dim Buffer() As Byte = serializerXML.Deserialize(readerText)
Dim ResultImage As Image = New Bitmap(New MemoryStream(Buffer))
readerText.Close()
Return ResultImage
End Function
' -----------------------------------------------------
End Class
Conclusion :
Bon coding.
Romelard Fabrice (Alias F___)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.