none
Problemas al cargar imagen en Varbinary de SQL Server 2005 en un PictureBox en VB.net con VisualStudio2012 RRS feed

  • Pregunta

  • El Problema es el siguiente, tengo un campo varbinary (contiene una imagen) que capturo a través de su id en un datagridview previo, a través del evento Celldoubleclik en el registro del datagrid que quiero mostrar la imagen, a tarves de un datareader capturo la imagen y pretnedo mostrarla en el picturebox, pero en todos los intentos me genera el mismo error "Parametro invalido", por favor me podrán ayudar. anexo el codigo.

    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.Configuration
    Imports System.IO
    Imports System.Drawing.Image

     Public cmd2 As SqlCommand
     Public dr2 As SqlDataReader

    Private Sub DtGView3_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DtGView3.CellDoubleClick
            PictB1.Image = Nothing

            If Me.DtGView3.CurrentRow.Cells("Idilustracion").Value.ToString <> "" Then

                    cmd2 = New SqlCommand("Select Ilustracion from [ilustraciones] where Idilustracion='" & _                                                                 Me.DtGView3.CurrentRow.Cells("IdIlustracion").Value.ToString & "'", con2)

                       dr2 = cmd2.ExecuteReader
                       If dr2.Read Then

                       ---/* He probado esto y genera error Parametro invalido*/-----

                        Dim newimage As Image
                        Dim imagen2 As Byte() = dr2(0)
                        Using ms = New System.IO.MemoryStream(imagen2, 0, imagen2.Length)
                                ms.Write(imagen2, 0, imagen2.Length)
                               newimage = Image.FromStream(ms)
                               PictB1.Image = newimage
                        End Using

                  -----/* he probado este otro y también genera el mismo error: Parametro invalido*/----

                        Dim imagen2() As Byte = dr2(0)
                        Dim newimage As New MemoryStream(imagen2)
                        PictB1.Image = Image.FromStream(newimage)

                  -----/* esto también me genera el mismo error: Parametro inválido */--------

                         Dim imagen2(dr2.GetBytes(0, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
                         dr2.GetBytes(0, 0, imagen2, 0, imagen2.Length)
                         Dim newimage As New MemoryStream(imagen2)
                         PictB1.Image = Image.FromStream(newimage)

                   ----/* este también me genera el mismo error: Parametro inválido */----------

                          Dim imagen2 As Byte() = CType(dr2(0), Byte())
                          Dim ms As New IO.MemoryStream(imagen2)
                          Dim bitmap As Bitmap = Drawing.Image.FromStream(ms)
                          PictB1.Image = bitmap

                   -----/* este también genera el mismo error: Parametro invalido */-------

                          Dim valor As Object = dr2(0)
                          Dim imagen2 As Byte() = DirectCast(valor, Byte())
                          Using ms As New IO.MemoryStream(imagen2)
                                PictB1.Image = Image.FromStream(ms)
                          End Using

                End If
                dr2.Close()


            End If

        End Sub

    Por favor les agradecería el apoyo.


    jueves, 16 de noviembre de 2017 19:26

Todas las respuestas

  • El "Image.FromStream" tiende a quejarse diciendo "parámetro inválido" cuando los datos que se le entregan corresponden a un formato de imagen que no es capaz de reconocer. ¿Cómo metiste el campo imagen en la tabla? ¿Tienes la seguridad de que es un formato compatible con System.Drawing.Image?
    jueves, 16 de noviembre de 2017 22:29