Ver Imagen En Picturebox


Objetivo: 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

Objetivo: 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

Objetivo: 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.

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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

última edición por imagomundi el Viernes, 21 Septiembre 2018, 15:39; editado 1 vez
Objetivo: 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.

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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

Objetivo: 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.

última edición por shordi el Sabado, 22 Septiembre 2018, 10:05; editado 1 vez
Perfil MP  
Objetivo: 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


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 1.1454s (PHP: -88% SQL: 188%)
Consultas SQL: 47 - Debug off - GZIP Activado