Visual Basic.NET - foto en datagridview

 
Vista:
sin imagen de perfil
Val: 116
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por nato (59 intervenciones) el 28/08/2017 23:25:15
hola gracias de antemano por su ayuda

tengo un datagridview que lleno con una consulta sql
en el datagridview tengo una columna de imagen la cual quiero llenar pero en la tabla tengo solo la ruta de la imagen y la verdad no se como hacerlo dejo el código que he intentado, si alguien me puede orientar



Diapositiva1
Diapositiva2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Dim cn As SqlConnection
        Dim adaptador As SqlDataAdapter
        Dim dt As DataTable
 
        If txtclase.Text = "" Then
 
            MsgBox("INGRESAR UNA CLASE")
 
            txtclase.Text = ""
            txtclase.Focus()
        Else
 
 
            Try
 
                'llena el data grib segun la selecccion de los estatus disponibles
 
                cn = New SqlConnection(CADENACONEXION2)
 
 
                adaptador = New SqlDataAdapter("select codigo,clave,ubicacioncompleta,descripcion,clase,estatus,rutafoto from buscarcosar where (clase = '" & txtclase.Text & "')", cn)
 
 
                dt = New DataTable
                adaptador.Fill(dt)
                DataGridView1.DataSource = dt
 
 
            Catch ex As Exception
                MessageBox.Show("error al llenar la grilla" + ex.ToString)
            End Try
 
 
 
'QUIERO LLENAR LA COLUMNA FOTO DE TODOS LOS RESULTADOS QUE ME TARE LA CONSULTA SQL 
 
 
            DataGridView1.Item(1, 1).Value = New Bitmap(Image.FromFile(DataGridView1.CurrentRow.Cells("rutafoto").Value.ToString()))
            DataGridView1.Item(1, 2).Value = New Bitmap(Image.FromFile(DataGridView1.CurrentRow.Cells("rutafoto").Value.ToString()))
 
 
 
        End If
 
    End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Edward
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por Edward (146 intervenciones) el 29/08/2017 00:20:04
Buen día para todos,

Nato, te comparto este link que te puede ayudar para lo que necesitas.

https://aprendamosdeprogramacion.wordpress.com/2017/04/09/guardar-imagenes-en-las-bases-de-datos-sqlite-mysql-y-access-con-vb-net/


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 116
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por nato (59 intervenciones) el 02/09/2017 16:54:30
gracias por tu ayuda, lei el proyecto que dejas en el link , pero mi gran duda es como hacerlo en lugar de almacenas la imagen , almacenar la ruta solo de la imagen


gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edward
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por Edward (146 intervenciones) el 07/09/2017 05:13:27
Buen día para todos,

Nato, disculpa la demora en responder; te comento que para utilizar la ruta de la imagen debes hacer uso de la propiedad "ImageLocation", así en la base de datos puedes tener un campo con el nombre de la imagen y ya teniendo una ruta especifica en donde vas almacenar las imágenes solo es cuestión de indicarle al control PictureBox que imagen debe cargar, seria algo así:

1
2
3
4
5
6
7
':::Creamos una variable para asignar la ruta donde se almacenan las imagenes
Dim ruta As String = "C:\Tutoriales\img\"
':::Creamos otra variable para asignar el nombre de la imagen que esta en un control DatagridView
Dim imagen As String = DataGridView.CurrentRow.Cells("imagen").Value
 
':::Indicamos al control PictureBox mediante la propiedad ImageLocation donde se encuentra la imagen
PictureBox.ImageLocation = ruta + imagen


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 116
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por nato (59 intervenciones) el 09/09/2017 20:31:04
gracias por tu ayuda
y creo que tu ejemplo me muestra la foto en un picture box pero lo que intento es mostrala en un campo
datagridviewimagen del datagrid


tengo esto n es la cantidad de registros encontrados en la consulta sql y "ruta foto" es la columna del datagridview que tiene valgase la redundancia la ruta completa pero solo me muestra la primera imagen en el datagrid por que en la sintaxis esta asi ("rutafoto") no se como hacerlo para que bayya imcrementando la fila

como hago para que cambien en cada celda ejemplo

DataGridView1.Item(1, i).Value = New Bitmap(Image.FromFile(DataGridView1.CurrentRow.Cells("rutafoto").Value.ToString())) de la celda 1
DataGridView1.Item(1, i).Value = New Bitmap(Image.FromFile(DataGridView1.CurrentRow.Cells("rutafoto").Value.ToString())) de la celda 2



1
2
3
4
5
6
For i As Integer = 0 To n
 
    'DataGridView1.Item(1, i).Value = New Bitmap(Image.FromFile(DataGridView1.CurrentRow.Cells("rutafoto").Value.ToString()))
 
    i = i + 1
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 116
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por nato (59 intervenciones) el 13/09/2017 01:38:45
hola gracias por su ayuda logre hacer lo que necesitaba la dejo como ejemplo por si a alguien le sirve
la base de datos solo almaceno la ruta completa de la foto
en el form lleno el datagridview con los datos de la tabla
y luego recorro el datagridview y le asigno en la columna de imagen del data la imagen que tiene la ruta

si alguien puede modificar o hacer observaciones lo agradeceré gracias


Presentacion1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim n As Int16
    Dim cn As SqlConnection
    Dim adaptador As SqlDataAdapter
    Dim dt As DataTable
 
    If txtclase.Text = "" Then
 
        MsgBox("INGRESAR UNA CLASE")
 
        txtclase.Text = ""
        txtclase.Focus()
    Else
 
        Try
            'llena el data grib segun la selecccion de los estatus disponibles
 
            cn = New SqlConnection(CADENACONEXION2)
            adaptador = New SqlDataAdapter("select codigo,clave,ubicacioncompleta,descripcion,clase,estatus,rutafoto from tutabla where (clase = '" & txtclase.Text & "')", cn)
            dt = New DataTable
            adaptador.Fill(dt)
            DataGridView1.DataSource = dt
 
            'para contar cuantos registros encontro la consulta sql
            n = dt.Rows.Count
 
 
            Dim i As Integer
 
 
            For i = 0 To n - 1
'DataGridView1.Item(1, i).Value (esla columna de imagen del datagridview
 
'DataGridView1.Item(8, i) (es la columna donde esta la ruta en el datagridview)
 
                DataGridView1.Item(1, i).Value = New Bitmap(Image.FromFile(DataGridView1.Item(8, i).Value.ToString()))
 
 
            Next
            i = i + 1
 
        Catch ex As Exception
            MessageBox.Show("error al llenar la grilla" + ex.ToString)
        End Try
 
 
 
    End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edward
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por Edward (146 intervenciones) el 24/09/2017 22:18:33
Buen día para todos,

Nato, excelente que hayas logrado resolver tu inconveniente y que has decidido compartir tu solución con el foro.

Te comparto otras posibles formas de pasar una imagen almacenada en nuestro equipo a una columna de un DataGridView.

Método 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ':::Ruta donde tengo la imagen
    Dim imagen As Image = Image.FromFile("C:\Tutoriales\imagen.jpg")
 
    ':::Creamos una variable de tipo MemoryStram
    Dim MS As New MemoryStream
    ':::Guardamos en la variable MS el contenido de la imagen
    imagen.Save(MS, imagen.RawFormat)
    ':::Pasamos a Byte nuestra imagen
    Dim Imagenes() As Byte = MS.GetBuffer
 
    ':::Agrego una nueva fila de forma manual
    DataGridView1.Rows.Add("1", "Imagen", Imagenes)
    ':::Ahora paso la imagen del DatagridView a un control PictureBox para verificar el resultado
    PictureBox1.Image = DataGridView1.CurrentRow.Cells("imagen").FormattedValue
End Sub

El resultado es el siguiente:

sshot-1



Método 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
':::Funcion para crear el Thumbnail o Miniatura de la imagen
Function MycallBack() As Boolean
   Return False
End Function
 
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 
    ':::Ruta donde tengo la imagen
    Dim imagen As Image = Image.FromFile("C:\Tutoriales\imagen.jpg")
 
    ':::Llamado de la funcion para crear el Thumbnail o Miniatura de la imagen
    Dim CallBack As New GetThumbnailImageAbort(AddressOf MycallBack)
 
    ':::Agrego una nueva fila de forma manual, establesco la imagen en la columna imagen y le doy un tamaño especifico
    DataGridView1.Rows.Add("1", "Imagen", imagen.GetThumbnailImage(50, 50, CallBack, IntPtr.Zero))
 
    ':::Ahora paso la imagen del DatagridView a un control PictureBox para verificar el resultado
    PictureBox1.Image = DataGridView1.CurrentRow.Cells("imagen").FormattedValue
End Sub

El resultado seria el siguiente:

sshot-2



Como puedes apreciar en el segundo método la imagen se ve mas distorsionada porque le asignamos un tamaño de 50*50.


Cuando almacenas la ruta de la imagen en la BD solo debes mediante un ciclo For recorrer el campo de la BD donde tienes la ruta de la imagen para cargar la imagen en la columna del control DataGridView.


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 116
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

foto en datagridview

Publicado por nato (59 intervenciones) el 25/09/2017 16:27:27
muchas gracias por tus aportaciones

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar