Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Question Recuperar IMAGEN de un QUERY

HOLA:

Tengo un pequeño problema. Tengo un query que obtiene la clave de una persona y su fotografía. Lo que busco es que me muestre la foto de la persona...

Es muy simple pero no se que me falta. Intenté con el DBimage y el Datasource pero me dibuja solo la mitad de la imagen.

Probé codigo que encontré en Internet pero algo me esta faltando... me marca error en la linea donde le asigno la imagen al objeto del formulario.

Este es el codigo que probé, si me pueden ayudar a ver donde esta el error... De antemano gracias!

Var
Stream: TMemoryStream;
Jpg: TJpegImage;
Begin
Stream := nil;
Jpg := nil;
query1.SQL.Clear;
query1.Close;
query1.SQL.Text:='select * from foto where foto_cve='''+Edit1.text+'''';
query1.Open;
try
Stream := TMemoryStream.Create;
TBlobField(query1.FieldByName('FOTO_IMAGEN')).SaveToStream(Stream);
if Stream.Size > 0 then begin
Stream.Position := 0;
Jpg := TJpegImage.Create;
Jpg.LoadFromStream(Stream);
Image1.Picture.Assign(Jpg); Aqui marca error
...
...
... etc.

Última edición por natalinuyo fecha: 13-02-2007 a las 20:17:37.
Responder Con Cita
  #2  
Antiguo 12-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
¿y que error te da?
Responder Con Cita
  #3  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Realmente seria muy bueno si nos aclararas cual es el error que te muestra pues no somos adivinos, pero de todas formas mira la pagina 369 del libro "La cara oculta de delphi 4" ofrecido gratuitamente en la pagina de Ian Marteens, allí te dice como capturar imagenes de la BD.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
El error que marca es:

Project xxx.exe raised exception class EJPEG with message ‘JPEG error #53’. Process stopped…
Responder Con Cita
  #5  
Antiguo 12-02-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
STFW

http://www.capmac.org/phpbb2/viewtopic.php?p=6884
Lo más problable es que la imagen sea muy grande y tengas problemas de memoria, prueba lo hacer lo mismo pero con una imagen más pequeña.
__________________

Responder Con Cita
  #6  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Marca que no he declarado el identificador TBlobStream.
Responder Con Cita
  #7  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por jhonny
Prueba cambiando el TStream por un TBlobStream y cambias la linea
TBlobField(query1.FieldByName('FOTO_IMAGEN')).SaveToStream(Stream); por
Stream := TBlobStream.Create(query1.FieldByName('FOTO_IMAGEN'),bmRead);
Y nos cuentas como te va.
Nota: habia eliminado este mensaje porque sencillamente me parecio que la sugerencia de Contraveneno era la correcta y no queria desviar a natalinuyo, pero ya que ha recibido el mensaje quizá por correo pues...

Cita:
Empezado por natalinuyo
Marca que no he declarado el identificador TBlobStream.
Debes cambiar tambien arriba en las declaraciones despues del var el TMemoryStream Por TBlobStream.


Pero te recomiendo dos cosas:

1) Debes tener en cuenta la sugerencia de ContraVeneno.
2) Lee la pagina de el libro que te sugerí anteriormente.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
La imagen no creo que sea muy grande. La exporté desde un manejador de BD y ya como archivo el tamaño que me indica es de 298K.
Responder Con Cita
  #9  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, y entonces ¿como te fue con lo del libro o con los cambios que te sugerí?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Se necesita alguna clase especial o algo así? me marca lo mismo sobre el identificador, el problema es que lo marca en el 'TBlobStream' no en la variable 'Stream'.

Con respecto al libro, llevo desde que me lo sugeriste hasta este momento y aun no lo baja... pero en eso estoy.

Y pues de la imagen, ustedes creen que sea el tamaño? como ya les expliqué mide menos de 300 k...

Tengo la idea de extraer la imagen y guardarla en un archivo BMP o JPG, el problema es que no se como hacerlo... tal vez esa sería la solución, ustedes que creen?

Gracias
Responder Con Cita
  #11  
Antiguo 12-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Solo por curiosidad, en tu código introduce la siguiente linea:
Código Delphi [-]
//...
Stream := TMemoryStream.Create;
TBlobField(query1.FieldByName('FOTO_IMAGEN')).SaveToStream(Stream);


Stream.SaveToFile('c:\1.jpg'); // <-- Esta es la linea nueva


if Stream.Size > 0 then begin
Stream.Position := 0;
// ...

Así la imagen se guardara en el disco duro. Ahora abre la imagen con otro programa y comprueba que esta bien.
Responder Con Cita
  #12  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Particularmente ya no creo que sea el tamaño, lo que si se me habia olvidado preguntar era el tipo de imagen que estabas manejando, desde un princio asumi que era JPG... Porque tenias declarada una variable de tipo TJpegImage.
Cita:
tal vez esa sería la solución, ustedes que creen?
Quizá, Esperemos a que hagas la prueba de seoane, descargues el libro, pruebes el ejemplo que alli viene y si no funciona pues nos indicas que tipo de imagen quieres convertir a JPG, como te fue con la prueba de seoane y tratamos por ese otro lado.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #13  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Ya probé bien la opcion de Seoane, sin embargo no crea bien el dibujo. El libro aun está en proceso.

Última edición por natalinuyo fecha: 12-02-2007 a las 19:35:29.
Responder Con Cita
  #14  
Antiguo 12-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola a todos
Perdon que me entrometa, para cargar una imagen de la tabla, que yo sepa no se necesita nada en especial ya que se toma como un archivo mas.
Yo dejaria esta parte y lo haria con el DBimage enlazado al datasource.
Código Delphi [-]
query1.SQL.Clear;
query1.Close;
query1.SQL.Text:='select * from foto where foto_cve='''+Edit1.text+'''';
query1.Open;
Ahora en el DBimage en la propiedad Stretch, la pasaria a True, con esto la imagen tomara la dimension del tamaño que le des al componente.
Digo todo esto porque asi lo hago yo y no tengo nigun problema, ademas si le cambio en propiedad los anchors, me la muestra mas grande si cambio la dimension del form.
Saludos
Responder Con Cita
  #15  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
1) Con cual codigo te muestra este ultimo error?.
2) Que tipo de conexion estas usando?
3) Si estas usando BDE. ¿Tienes la seguridad de que estas asignando el Alias correctamente y tienes conexion a dicha BD?

Este ultimo punto lo planteo porque veo que en el codigo que mostraste dice asi:

Código Delphi [-]
query1.SQL.Clear;
query1.Close;
query1.SQL.Text:='select * from foto where foto_cve='''+Edit1.text+'''';
query1.Open;

Aal parecer todo lo estas asignando en ejecución y veo que falta la propiedad databasename la cual no esta siendo asignada. y tal vez por eso te muestra este ultimo error,
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #16  
Antiguo 12-02-2007
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Obviamente les simplifiqué el código.... EN cada query selecciono bien la tabla, el problema no es el query... me marca error hasta que le asigno la imagen Stream al objeto Image

COmo ya dije, me crea el archivo pero con error, es decir no sale nada de nada...
Responder Con Cita
  #17  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Caramba, Que sucede si cambias.
Código Delphi [-]
Image1.Picture.Assign(Jpg);
Por
Código Delphi [-]
 
Image1.Picture.Graphic := Jpg;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #18  
Antiguo 12-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Perdonen que insista pero si se dice esto:
Cita:
Es muy simple pero no se que me falta. Intenté con el DBimage y el Datasource pero me muestra solo la mitad de la imagen.
Cambiando el parametro stretch seria suficiente.
Saludos
Responder Con Cita
  #19  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Caral
Cambiando el parametro stretch seria suficiente
Claro¡¡¡, es cierto lo que dice Caral. Si desde un principio te muestra la imagen pues solo es cuestion de colocar la propiedad stretch en True y ya.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #20  
Antiguo 12-02-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Yo pense que con "me muestra la imagen a la mitad", se refería a que la imagen estaba incompleta, por eso fue que pense en la falta de memoria para completar de cargar la imagen....
__________________

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Recuperar los nombres de los campos almacenados en una query juanpe SQL 1 27-09-2006 18:46:44
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
Cómo almacenar, editar y recuperar una archivo de imagen guardado en la base de datos JKM MS SQL Server 0 03-05-2006 22:29:41
Recuperar Sql jzk OOP 2 24-11-2004 12:58:30
Cargar y recuperar imagen en bd MySQL??? burasu MySQL 2 22-08-2004 22:40:18


La franja horaria es GMT +2. Ahora son las 14:51:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi