Visual Basic Foro
Programación => Visual Basic .NET / C# => Mensaje iniciado por: javierjava en Octubre 14, 2012, 12:48:16 am
-
Que tal alguien me podría ayudar en cómo convertir una imagen en string tengo esta funciones que si lo hace pero es muy lento y no me funciona bien
Imports System.IO
Imports System.Text
Imports System.Drawing
Module mBitmapConverter
Public Function BitmapToString(ByVal sImagePath As String) As String
Try
Dim data As String
Dim ms As MemoryStream = New MemoryStream
Dim bmp As Bitmap = New Bitmap(sImagePath)
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
data = Convert.ToBase64String(ms.ToArray())
Return data
Catch ex As Exception
Return String.Empty
End Try
End Function
Public Function BitmapToString(ByVal bImage As Bitmap) As String
Try
Dim data As String
Dim ms As MemoryStream = New MemoryStream
bImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
data = Convert.ToBase64String(ms.ToArray())
Return data
Catch ex As Exception
Return String.Empty
End Try
End Function
Public Function StringToBitmap(ByVal sImageData As String) As Bitmap
Try
Dim ms As New MemoryStream(Convert.FromBase64String(sImageData))
Dim bmp As Bitmap = Bitmap.FromStream(ms)
Return bmp
Catch ex As Exception
Return Nothing
End Try
End Function
End Module
Alguien tendría una forma de hacerlo mucho mejor y que no sea tan lenta como el de esta función.
Disculpen las molestias y gracias por cualquier ayuda que me puedan brindar
-
Encontré este creo que podes adaptar a tu proyecto, funciona muy bien ojala te sirva amigo.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Convertir
Dim b As Byte() = IO.File.ReadAllBytes("c:\x\original.jpg")
Dim str As String = Convert.ToBase64String(b)
'Leer
Dim z As Byte() = Convert.FromBase64String(str)
Dim scribe As New IO.FileStream("c:\x\original_convertido.jpg", IO.FileMode.Create, IO.FileAccess.ReadWrite)
scribe.Write(z, 0, z.Length)
scribe.Close()
End Sub
Aca hay mas datos creo que modificaron unos cuantos pero el que te pase creo que ya sirve por que ellos estan tratando de otro tema.
Fuente: http://social.msdn.microsoft.com/Forums/es/vbes/thread/fa1f4ceb-2fbf-43fa-8700-7720cadc9678 (http://social.msdn.microsoft.com/Forums/es/vbes/thread/fa1f4ceb-2fbf-43fa-8700-7720cadc9678)
Saludos...