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
Referencias de interés
Tags: VB.NET
Posted in Visual Basic .NET | 3 Comments »
abril 11th, 2012 at 20:16
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»
abril 12th, 2012 at 08:57
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.
julio 15th, 2013 at 21:34
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