Autor Tema: convertir imagen a array bytes MemoryStream recuperar imagen PictureBox vb.net  (Leído 19659 veces)

victor14

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
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:

Código: [Seleccionar]
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 :

Código: [Seleccionar]
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......
« Última modificación: 23 de Octubre 2015, 10:11 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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):

Código: [Seleccionar]
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

victor14

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
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:

 
Código: [Seleccionar]
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...

victor14

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
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

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Bueno gracias a tí por indicar cómo lo resolviste, le puede servir de ayuda a otras personas

Saludos

javierc

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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
« Última modificación: 23 de Noviembre 2024, 02:40 por javierc »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".