|
Página 1 de 1
|
Autor |
Mensaje |
imagomundi
Alberto Alejandro Moyano
Usuario
Registrado: Noviembre 2009
Mensajes: 33
Edad: 60 Ubicación: Buenos Aires
|
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
|
#1 Miercoles, 19 Septiembre 2018, 22:06 |
|
|
imagomundi
Alberto Alejandro Moyano
Usuario
Registrado: Noviembre 2009
Mensajes: 33
Edad: 60 Ubicación: Buenos Aires
|
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
|
#2 Miercoles, 19 Septiembre 2018, 22:17 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
|
#3 Miercoles, 19 Septiembre 2018, 23:07 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
=================== No podemos regresar
|
#4 Jueves, 20 Septiembre 2018, 10:41 |
|
|
imagomundi
Alberto Alejandro Moyano
Usuario
Registrado: Noviembre 2009
Mensajes: 33
Edad: 60 Ubicación: Buenos Aires
|
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
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
|
#5 Viernes, 21 Septiembre 2018, 15:36 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
=================== No podemos regresar
|
#6 Viernes, 21 Septiembre 2018, 17:25 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Ver Imagen En Picturebox
Cuando asignes una nueva ruta al load del PictureBox hacele un .refresh, con eso tiene que actualizar la foto.
Saludos.
|
#7 Viernes, 21 Septiembre 2018, 20:27 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#8 Sabado, 22 Septiembre 2018, 08:12 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
=================== No podemos regresar
última edición por shordi el Sabado, 22 Septiembre 2018, 10:05; editado 1 vez
|
#9 Sabado, 22 Septiembre 2018, 08:40 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#10 Sabado, 22 Septiembre 2018, 13:41 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|