Visual Basic .NET – Convertir de tipo System.drawing.Image a Array de Bytes

Written by lopezatienza on 20/12/2010 – 10:59 -

Comentarios



En este artículo explico la forma de convertir un tipo System.Drawing.Image a un Array de Bytes.

Código



La función seria la siguiente:

Public Function imageToByteArray(ByVal imageIn As System.Drawing.Image, ByVal pformato As System.Drawing.Imaging.ImageFormat) As Byte()

Dim ms As New IO.MemoryStream

Try

imageIn.Save(ms, pformato)

Catch ex As Exception

MessageBox.Show("Ocurrió un error " & ex.Message)

End Try

Return ms.ToArray()

End Function

La conversión inversa sería:

Public Function byteArrayToImage(ByVal byteArrayIn As Byte()) As Image

Dim returnImage As Image = Nothing

Try

Dim ms As New IO.MemoryStream(byteArrayIn)

returnImage = Image.FromStream(ms)

Catch ex As Exception

MessageBox.Show("Ocurrió un error " & ex.Message)

End Try

Return returnImage

End Function

Framework compatibles



Framework v1.1 en adelante

Namespaces



System.drawing.image

Referencias de interés



---

Autor: Antonio Lopez Atienza


Tags:
Posted in Visual Basic .NET | 3 Comments »

3 Comments to “Visual Basic .NET – Convertir de tipo System.drawing.Image a Array de Bytes”

  1. Jorge Loaiza Says:

    He estado probando el método y debuleando me di cuenta que en la línea

    returnImage = Image.FromStream(ms)

    marca un error y muestra el siguiente mensaje:

    «Ocurrió un error El parámetro no es válido»

  2. lopezatienza Says:

    Buenas Jorge.

    Utilizando las siguientes líneas de código se puede comprobar que el código está correcto:

    Dim pByteImagen As Byte() = imageToByteArray(Image.FromFile(«C:\prueba.png»), System.Drawing.Imaging.ImageFormat.Png)
    Dim pImagen As Image = byteArrayToImage(pByteImagen)

    Si te marca ese error es porque le estás pasando a el método FromStream un parámetros que no es del tipo System.IO.MemoryStream

    Un saludo.

  3. Marco Says:

    Saludos…
    uso este código para convertir de imágenes a arreglo y luego de arreglo a imágenes pero unas imágenes se al visualizar se ven hasta la mitad y otras dan un error, si me pueden ayudar gracias.

    Public Function Imagen_Bytes(ByVal foto As Image) As Byte()
    Dim MS As MemoryStream = New MemoryStream()
    foto.Save(MS, ImageFormat.Jpeg)
    Return MS.ToArray
    End Function

    Public Function Bytes_Imagen(ByVal bytes() As Byte) As Image
    Dim imagen As Image = Nothing
    Dim MS As MemoryStream = New MemoryStream(bytes)
    imagen = Image.FromStream(MS)
    Return imagen
    End Function

Leave a Comment

 

RSS
MCC D5E