miércoles, octubre 08, 2008

Serialización Binaria

Aquí va un ejemplo mas de como hacer serialización binaria, con propósitos de transmitir objetos, o almacenarlos en una Base de Datos



Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

Public Class SerializacionBinaria

Public Shared Function Serializa(ByVal Obj As Object) As Byte()
Dim MS As New MemoryStream
Dim BF As New BinaryFormatter
MS.Position = 0
Dim Buffer() As Byte
Try
BF.Serialize(MS, Obj)
Buffer = MS.ToArray
Catch ex As Exception
Throw ex
Finally
MS.Flush()
MS.Close()
End Try
Return
Buffer
End Function

Public Shared Function Deserializa(ByVal SerializedData() As Byte) As Object
Dim MS As MemoryStream = FuncsAndUtils.ArrayToStream(SerializedData)
Dim BF As New BinaryFormatter
MS.Position = 0
Dim odeserialized As Object
Try
odeserialized = BF.Deserialize(MS)
Catch ex As Exception
Throw ex
Finally
MS.Flush()
MS.Close()
End Try
Return odeserialized
End Function

Public Shared Function Deserializa(ByVal SerializedData As Stream) As Object
Dim BF As New BinaryFormatter
Dim odeserialized As Object
Try
odeserialized = BF.Deserialize(SerializedData)
Catch ex As Exception
Throw ex
End Try
Return
odeserialized
End Function

End Class

martes, octubre 07, 2008

Conversores

Con la siguiente clase lo que se pretende es, poder convertir tipos de datos, entre arreglos de bytes e imagen. esto es para poder transmitirlos o guardarlos en una base de datos.



Imports System.IO
Imports System.Text
Imports System.Drawing


Public Class FuncsAndUtils
   Public Shared Function ArrayToStream(ByVal buffer() As Byte) As Stream
     Dim Flujo As Stream = New MemoryStream(buffer)
     Return Flujo
   End Function

   Public Shared Function ArrayToBitmap(ByVal Buffer() As Byte) As Bitmap
      Return StreamToBitmap(ArrayToStream(Buffer))
    End Function

   Public Shared Function StreamToArray(ByVal Flujo As Stream) As Byte()
       Dim streamLength As Integer = Convert.ToInt32(Flujo.Length)
       Dim fileData(streamLength) As Byte
       ' Read the file into a byte array
       Flujo.Read(fileData, 0, streamLength - 1)
       Flujo.Close()
       Return fileData
    End Function


    Public Shared Function StreamToBitmap(ByVal Flujo As Stream) As Bitmap
       Try
          Return New Bitmap(Flujo)
       Catch ex As Exception
          Throw ex
       End Try
    End Function



   Public Shared Function BitmapToArray(ByVal bmp As Bitmap) As Byte()
      Dim stream As New System.IO.MemoryStream()
       bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp)
       stream.Position = 0
       Dim data(stream.Length) As Byte
       stream.Read(data, 0, stream.Length)
       Return data
    End Function

    Public Shared Function StringToArray(ByVal valor As String) As Byte()
       Return (New UnicodeEncoding).GetBytes(valor)
    End Function

    Public Shared Function BitmapToStream(ByVal bmp As Bitmap) As Stream
       Dim stream As New System.IO.MemoryStream()
       bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp)
       stream.Position = 0
       Return stream
    End Function

    Public Shared Function ArrayToString(ByVal valor() As Byte) As String
       Return New UnicodeEncoding().GetString(valor)
    End Function



End Class