Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: victor14 en 21 de Octubre 2015, 01:44
-
buenas tardes amigos desarrolladores, soy nuevo en estoy y tengo una duda, en un proyecto guardo información de alumnos y entre esa info. esta su foto, entonces la guardo en mysql convirtiéndolo a bytes con esta función:
Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte()
'si hay imagen
If Not Imagen Is Nothing Then
'variable de datos binarios en stream(flujo)
Dim Bin As New MemoryStream
'convertir a bytes
Imagen.Save(Bin, Imaging.ImageFormat.Jpeg)
'retorna binario
Return Bin.GetBuffer
Else
Return Nothing
End If
End Function
y me la guarda muy bn ya que inserte un datagriedview y me lo muestra , pero al querer hacer la consulta y que me mande los campos a los textbox y al picture, la imagen no me la muestra, no se si me pudieran ayudar, la funcion que tengo para convertir bytes a imagen es :
Private Function Bytes_Imagen(ByVal Imagen As Byte()) As Image
Try
'si hay imagen
If Not Imagen Is Nothing Then
'caturar array con memorystream hacia Bin
Dim Bin As New MemoryStream(Imagen)
'con el método FroStream de Image obtenemos imagen
Dim Resultado As Image = Image.FromStream(Bin)
'y la retornamos
Return Resultado
Else
Return Nothing
End If
Catch ex As Exception
Return Nothing
End Try
End Function
pero no se como mandarla a llamar para poder devolver la imagen al picture box, de ante mano gracias por tomarse la molestia de leer este problema......
-
Hola Víctor, en primer lugar darte la bienvenida a los foros. También señalarte que para pegar código tenemos unas instrucciones indicadas en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo hacerlo para que sea visualizable correctamente.
Respecto al código, he probado este código y me ha funcionado bien (para probarlo, crear un proyecto de Visual Basic con un picture box y escribir las rutas de imágenes correctas para nuestro pc):
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox("eo")
PictureBox1.Image = Image.FromFile("C:\Users\Micarpeta\imagen1.jpg")
Dim miImagenBytes() As Byte = Imagen_Bytes(Image.FromFile("C:\Users\Micarpeta\imagen2"))
PictureBox1.Image = Bytes_Imagen(miImagenBytes)
End Sub
Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte()
'si hay imagen
If Not Imagen Is Nothing Then
'variable de datos binarios en stream(flujo)
Dim Bin As New MemoryStream
'convertir a bytes
Imagen.Save(Bin, Imaging.ImageFormat.Jpeg)
Bin.Dispose()
'retorna binario
Return Bin.GetBuffer
Else
Return Nothing
End If
End Function
Private Function Bytes_Imagen(ByVal Imagen As Byte()) As Image
Try
'si hay imagen
If Not Imagen Is Nothing Then
'caturar array con memorystream hacia Bin
Dim Bin As New MemoryStream(Imagen)
'con el método FroStream de Image obtenemos imagen
Dim Resultado As Image = Image.FromStream(Bin)
Bin.Dispose()
'y la retornamos
Return Resultado
Else
Return Nothing
End If
Catch ex As Exception
Return Nothing
End Try
End Function
End Class
Saludos
-
Buenas noches alex, gracias por esa informacion, disculpa ya hice eso pero ahora mi pregunta es que a la hr de hacer la consulta como la jalo de la base de datos hacia el picture , osea como le asigno el campo de la bd al picturebox???
por que para los textbox hago algo asi:
txtclavealu.Text = registro.Tables("alumnos").Rows(0).Item("id_alu")
pero para e picture no se como mandarlo llamar, espero me puedas ayudar , muchas gracias de antemano alex...
-
gracias por tu consejo , pero pude resolver este problema que tenia de manera mas facil , guardando ruta de la imagen y mandandola traer al picturebox con un load, gracias de todos modos por tu comentario
-
Bueno gracias a tí por indicar cómo lo resolviste, le puede servir de ayuda a otras personas
Saludos
-
Hola, soy nuevo por aquí, estoy haciendo un curso de vb.net y justo buscaba este código, pero lo pongo en un proyecto de consola y aún añadiendo los 3 imports del principio no reconoce algunos métodos del objeto Image para poder ejecutar este código como, Image.FromStream(Bin) o Image.FromFile...
¿Es por ser una aplicación de Consola? He visto que si abro un proyecto de Forms sí compila sin errores, por lo que tengo dos preguntas:
1. Cómo puedo grabar el resullado en un fichero bin en el disco? El ejemplo creo que no lo graba no?
2. ¿Cómo podría hacer lo mismo en una aplicación de consola?
Es que aún estoy muy verde con con vb.net, estoy usando algunos ejemplos que he visto para pasar de imagen a bin y me genera un archivo con el mismo tamaño y aparentemente el mismo contenido.
Igual me estoy complicando, lo que necesito es una aplicación de consola que, teniendo un fichero en jpg grabarlo en binario como .bin y luego la operación inversa, teniendo un fichero .bin grabar un fichero con el .jpg
Gracias y saludos