Ver Imagen En Picturebox


Subject: Ver Imagen En Picturebox
Hola a todos, estoy tratando de resolver este tema.

Después de leer bastante por internet (incluido este foro) me decidí por la propuesta de shordi, en lo que respecta a guardar imagenes en una base de datos sqlite, utilizando un campo para el nombre del archivo y otro campo (blob) para la imagen.

Lo he conseguido con el código que pongo a continuación.

'BOTON QUE PERMITE ELEGIR LA IMAGEN
Public Sub btnSUBIRFOTO_Click()

'ME CONCETO A LA BD
cx = Mconex.conectar()

rs = cx.Edit("Pers_Fisicas", "ID_PERSFISICA=&1", id)

If Dialog.OpenFile() Then Return

rs.Update
cx.Commit
Mconex.desconectar(cx)

id = 0
llenarGrid

End


Ahora bien, si no entendí mal lo que he leído, la imagen no se puede mostrar directamente en el picturebox, sino que hay que «construirla» con los datos bse64 que se guardaron en la base ¿estoy en lo correcto?

He intentado con esto, pero no logro comprender que hago mal.

Public Sub btnSUBIRFOTO_Click()
Dim archivo As Blob

'ME CONCETO A LA BD
cx = Mconex.conectar()
cx.Begin
rs = cx.Edit("Pers_Fisicas", "ID_PERSFISICA=&1", id)

If Dialog.OpenFile() Then Return

txtNOMBREFOTO.text = Str(rs["NOMBREFOTO"])
archivo = rs["IMAGEN"]
File.Save(Application.path &/ "imagen.tmp", archivo.Data)
picIMAGEN.Picture = Picture.Load(Application.path &/ "imagen.tmp")

rs.Update
cx.Commit
Mconex.desconectar(cx)

id = 0
llenarGrid

End

Subject: Re: Ver Imagen En Picturebox
Respondo a medida que avanzo con mi comprensión del problema, con este código

Public Sub btnSUBIRFOTO_Click()
Dim archivo As Blob

'ME CONCETO A LA BD
cx = Mconex.conectar()
cx.Begin
rs = cx.Edit("Pers_Fisicas", "ID_PERSFISICA=&1", id)

If Dialog.OpenFile() Then Return

rs["NOMBREFOTO"] = File.Name(Dialog.Path)
rs["IMAGEN"] = File.Load(Dialog.Path)


txtNOMBREFOTO.text = Str(rs["NOMBREFOTO"])
archivo = rs["IMAGEN"]
File.Save(Application.path &/ "imagen.tmp", archivo.Data)
picIMAGEN.Picture = Picture.Load(Application.path &/ "imagen.tmp")

rs.Update
cx.Commit
'Mconex.desconectar(cx)

id = 0
llenarGrid

End


Consigo el objetivo en primera instancia, es decir, veo la imagen en el picturebox, pero la pierdo al perder el foco en el registro, presupongo qu ela imagen se perdio al estar en el temporal, entonces el meollo estaría en que construya el temporal cada vez que pincho en un registro ¿es así?

Sls

Subject: Re: Ver Imagen En Picturebox
Por que no usas una imagen del directorio y listo, o sea sin guardar ningun blob.?
No es para nada recomendable guardar la la imagen en un blob, pues a la larga va a tener uuna base cada vez mas pesada.
Saludos.

Profile PM  
Subject: Re: Ver Imagen En Picturebox
Haz caso a Tincho.
Es muy difícil controlar el peso de una imagen (por ejemplo en mi oficina la impresora multifunción te escanea un documento en un pdf de 33 kb. En mi casa el mismo documento escaneado por mi impresorita ocupa 1.5 mb.) lo que cargará tu base de datos enormemente, la hará lenta y pesada y, como siempre se ha dicho, por si hay fallos "No pongas todos los huevos en la misma cesta".

Saludos

Profile PM  
Subject: Re: Ver Imagen En Picturebox
Siguiendo el consejo de Tincho, actualicé el código a esto

Las imagenes se guardan en una carpeta IMG y guardo el nombre del archivo en un campo con este código

Public Sub btnSUBIRFOTO_Click()

'ME CONCETO A LA BD
cx = Mconex.conectar()
cx.Begin
'UTILIZO EDIT PORQUE EL REGISTRO YA ESTÁ CREADO
rs = cx.Edit("Pers_Fisicas", "ID_PERSFISICA=&1", id)

' PONGO UNA RUTA FIJA DONDE GUARDO LAS IMAGENES
Dialog.Path = "/home/alberto/BODEGA/IMG/"
'SOLO ACEPTO IMAGENE PNG
Dialog.Filter = ["*.png", "Picture files"]

If Dialog.OpenFile() Then Return

Select Case File.Ext(Dialog.Path)
Case "png"
Case Else
Message.Error("Formato de imagen no válido!")
Return
End Select

rs["NOMBREFOTO"] = File.Name(Dialog.Path)

rs.Update
cx.Commit
Mconex.desconectar(cx)

id = 0
llenarGrid

End


Puse un label donde mostrar el nombre del archivo (y me sirve para confirmar que funciona) y anda bien.

Como necesito hacer un refresco en el picturebox cada vez que pincho en una de las celdas del grid, hice este código

Public Sub picIMAGEN_GotFocus()
Dim a As String

a = txtNombreDELAfoto.Text
picIMAGEN.Picture = Picture.Load(a)
'ESTE TRUCO SE LE LEI A BENOIT EN UN FORO YA QUE PICTUREBOX NO ACTUALIZA SU CACHE
Picture[a] = Picture.Load(a)
picIMAGEN.Picture = Picture[a]

End


No entiendo que no anda bien, lo que consigo es que levante la primera imagen (el primer click al grid) pero no refresca la imagen en el picturebox, aunque el label si me muestra el dato refrescado.

Sls

Last edited by imagomundi on Friday, 21 September 2018, 15:39; edited 1 time in total
Subject: Re: Ver Imagen En Picturebox
Creo que el problema es el evento elegido. El evento picIMAGEN_GotFocus(), sólo se levantará cuando el foco del programa lo tenga la imagen, es decir, cuando hagas click sobre ella o entres en ella pulsando tabulador, o lo que sea.
En su lugar utiliza GridView1_change() o GridView1_Click()

Ya nos cuentas.

Profile PM  
Subject: Re: Ver Imagen En Picturebox
Cuando asignes una nueva ruta al load del PictureBox hacele un .refresh, con eso tiene que actualizar la foto.
picIMAGEN.REfresh

Saludos.

Profile PM  
Subject: Re: Ver Imagen En Picturebox
Shordi:

Citar:

....por ejemplo en mi oficina la impresora multifunción te escanea un documento en un pdf de 33 kb. En mi casa el mismo documento escaneado por mi impresorita ocupa 1.5 mb


A lo mejor fuera de temática.
¿ Y eso ?. ¿ La misma aplicación, el mismo documento y distintos tamaños ?. Algo no cuadra, calidad, resolución de la imagen, versión del software, etc,etc..


Saludos

Subject: Re: Ver Imagen En Picturebox
Shell escribió:  
Shordi:

Citar:

....por ejemplo en mi oficina la impresora multifunción te escanea un documento en un pdf de 33 kb. En mi casa el mismo documento escaneado por mi impresorita ocupa 1.5 mb


A lo mejor fuera de temática.
¿ Y eso ?. ¿ La misma aplicación, el mismo documento y distintos tamaños ?. Algo no cuadra, calidad, resolución de la imagen, versión del software, etc,etc..


Saludos

Ni idea, yo de la estructura de los PDF ni papa.

Last edited by shordi on Saturday, 22 September 2018, 10:05; edited 1 time in total
Profile PM  
Subject: Re: Ver Imagen En Picturebox
Shordi:

Citar:

Ni idea, yo de la estructura de los PDF ni papa.


¿ Y si solo fuese una imagen, jpeg o png hecho con esas dos máquinas, la del trabajo y la de casa ?
Creo que es un tema a tratar mejor en otro mensaje, Así que mejor crear un tema nuevo.

Saludos


Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1157s (PHP: -2% SQL: 102%)
SQL queries: 25 - Debug Off - GZIP Enabled