none
Cargar Foto en picture RRS feed

  • Pregunta

  • Buenas a todos, Lleno un Picturebox con una foto que tengo en mi Base de datos De esta manera

    Function Lp_MostrarFoto()
            Try
                Dim lbhayFoto As Boolean = False
                Dim lsQuery As String = "Consulta Sql"
                Dim drFoto As SqlDataReader
                Dim oMemoryStream As MemoryStream
                Dim bmpImagen As Bitmap
    
                Using loCommando As New SqlCommand(lsQuery, conex)
                    conex.Open()
                    drFoto = loCommando.ExecuteReader(CommandBehavior.SingleRow)
                    drFoto.Read()
                    If drFoto.IsDBNull(0) = True Then
                        Me.PictureBox4.Image = Nothing
    
                    Else
                        Dim mabytImagen As Byte()
                        mabytImagen = CType(drFoto("Foto"), Byte())
                        oMemoryStream = New MemoryStream(mabytImagen)
                        bmpImagen = New Bitmap(oMemoryStream)
                        Me.PictureBox4.Image = bmpImagen
                        lbhayFoto = True
    
                    End If
    
                End Using
    
    
    
            Catch ex As Exception
                MessageBox.Show(ex.Message, "lp_MostrarFoto", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            '   Return True
    
        End Function

    Y con esto intengo cargar una nueva foto en mi picture box

    Try
                If (OpenFileDialog1.ShowDialog = DialogResult.OK) Then
                    Dim imagen As String = OpenFileDialog1.FileName
                    PictureBox4.Image = Image.FromFile(imagen)
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    Pero me dice : object reference not set to an instance of an object

    Alguna solucion?

    De antemano gracias

    lunes, 14 de octubre de 2019 17:08

Todas las respuestas

  • Pero me dice : object reference not set to an instance of an object

    Sería de mucha ayuda si señalases la línea exacta en la que se produce el error, preferiblemente indicando cuál es la variable que vale "Nothing", cosa que es muy fácil de determinar por mediación del debugger con solo pasar el cursor del ratón por encima de las variables, pero es muy difícil de hacer sobre el texto del código pegado en el foro, especialmente si solo se dispone de un pequeño fragmento del mismo.

    Cerciórate de que no pierdes la ubicación del error debido al try...catch. Pon el try...catch provisionalmente entre comentarios, o selecciona la opción de visual studio que hace que se detenga sobre el error en lugar de saltar al Catch.

    lunes, 14 de octubre de 2019 18:13
  •  Aqui sale el Nothing Especificamente sobre el pictureBox
     PictureBox4.Image = Image.FromFile(imagen)
    Saludos
    lunes, 14 de octubre de 2019 18:23
  • Pro mi parte no veo nada malo en el código, lo que me lleva a pensar que el problema está en lo que cargas, que no sea una imagen, para evaluar esto puedes colocar filtros de busqueda  ej.

    OpenFileDialog.Filter = "JPG|*.jpg|JPEG|*.jpeg|GIF|*.gif|BMP|*.bmp|Todos|*.*"

    De esta manera te dara solo las extensiones de imagenes para cargar

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    lunes, 14 de octubre de 2019 19:09
  •  Aqui sale el Nothing Especificamente sobre el pictureBox

    Eso indica que ese código está metido en algún sitio donde el PictureBox4 no ha sido inicializado. Hay que revisar la estructura del código, no vaya a ser que tengas declaradas dos variables que se llamen PictureBox4 (una de ellas "la buena", ubicada en el formulario e inicializada desde InitializeComponent, y otra de ellas declarada en otro sitio, y esta última es la que vale Nothing). Y si el problema no es ese, entonces lo que ocurre es que en algún sitio que se ejecuta antes de llegar al punto del error has metido alguna instrucción que asigna nothing a PictureBox4 (o directamente has declarado PictureBox4 y no lo has inicializado).

    lunes, 14 de octubre de 2019 21:16