Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ver Imagen En Picturebox
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 

 



 
imagomundi - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
imagomundi - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
imagomundi - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron