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 14-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Red face lo más facil no me sale

Hola amigos, creo que es una tonteria pero no lo consigo.
Tengo un DB en Paradox con un campo Graphic. Ahí almaceno gráficos en bmp. Lo prefiero así, porque me ocupan muy poco y son realmente pocos gráficos. Para grabarlos en la DB utilizo el TDBimage y el OpenPictureDialog y no tengo problemas.
El problema viene cuando quiero cargar la foto en un TImage desde la DB. He probado un monton de formas y siempre me dice 'tipos incompatibles', pues uso la propiedad graphic del Timage, por ejemplo, y me dice que no es compatible TGraphic con Variant. Pongo esto:

Image1.Picture.Graphic:=Table1['IMAGEN'];

Podríais ayudarme?

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 14-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
Hola Espartaco,

prueba a cargarlo como un stream, si buscar Tblobstream en el foro seguro que encontraras algo que te ayude.

Espero que te sea de ayuda

Oscar Noe
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #3  
Antiguo 14-11-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, por favor para otras veces, intenta poner títulos más descriptivos a los mensajes, eso ayudará un montón a la gente que tenga el mismo problema y pueda encontrar una solución aquí usando el buscardor
En definitiva échad un vistazo a la Guía de Estilo.

Un saludo
Responder Con Cita
  #4  
Antiguo 15-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Pedrón bicho, llevas razón, la próxima vez lo haré así.

Oscarnoe, después de leer todo el foro de gráficos, ya había visto un hilo que hablaba de algo muy similir usando TBlobStream, lo que pasa es que era con jpg y he intentado usarlo con bmp cambiando por un TBitmap pero cuando intenta cargar el campo gráfico en el Timage me dice que el bitmap no es válido y no sé por qué, porque si visualizo el campo con un TDBimage aparece éste perfectamente. La verdad estoy un poco desesperado.
De todas formas si puedes me pones un poco de código, es que soy un poco novato en esto.

Gracias por contestar tan rápido.
Responder Con Cita
  #5  
Antiguo 15-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
si es bitmap es timage.picture.bitmap, si no me equivoco.
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #6  
Antiguo 15-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Eso es oscarnoe, pero resulta que tengo que cargar la imagen desde la base de datos de esta manera:

timage.picture.bitmap:=tabla1['imagen']

y al compilar me dice tipos imcompatibles Tbitmap y Variant.

Ahí es donde está el problema, sabrías como solucionarlo?

Muchas gracias de antemano.
Responder Con Cita
  #7  
Antiguo 15-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
pues deberias hacer lo mismo que con un jpeg, cargarlo con un stream
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #8  
Antiguo 15-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Ya, he intentado lo que pone neftali en otro hilo de este foro como pone él en su mensaje:


Código Delphi [-] procedure TForm1.JpegBlobToImage();
var
Stream: Tblobstream;
img: Tjpegimage;
begin
// Cargar el campo Blob en un Stream
Stream := Tblobstream.Create(TBlobField(Table1.fieldbyname('Imagen')), bmRead);
// Crear la Imagen
img := Tjpegimage.Create();
// Cargar la imagen con el Stream
img.loadfromstream(Stream);
// Pasarla a un control IMage
image1.picture.assign(img);
// Liberar
img.free;
Stream.free;
end;






Para hacerlo con un TBitmat ha cambiado la linea


Código Delphi [-]img: Tjpegimage;




por


Código Delphi [-]img: TBitmap;



y la línea:


Código Delphi [-]img := Tjpegimage.Create();



por


Código Delphi [-]img := TBitmap.Create();




pero esto me da en tiempo de ejecución un error de 'Bitmap no válido', y el contenido del campo está bien y no está dañado.

Por qué ocurre esto?

Gracias otra vez por el interés oscarneo.
Responder Con Cita
  #9  
Antiguo 15-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
creo que las lineas que cargan la imagen en el control deberia ser algo como (de memoria sin confirmarlo)

Código Delphi [-]
image1.picture.bitmap:= TBitmap.Create;
image1.picture.bitmap.loadfromstream(stream);

espero qeue te sea de ayuda.

Oscar Noe
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #10  
Antiguo 15-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
he probado tu código y me sigue diciendo lo mismo:

'Bitmap image is not valid'

Estoy desesperao, porque tengo el programa estancado con esto ya que tengo que mostrar lo que hay en la base de datos y sólo lo puedo hacer con un TDBImage.

Reitero mis gracias por el interés

un saludo

espartaco
Responder Con Cita
  #11  
Antiguo 17-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
soy yo otra vez, pongo el mensaje para que no se olvide.
Por favor, necesito ayuda con este tema, lo mas urgente posible.

Muchas gracias a todos por anticipado.
Responder Con Cita
  #12  
Antiguo 17-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Por qué usar un TImage si puedes usar un TDBImage?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 17-11-2006
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Cita:
Empezado por Lepe
¿Por qué usar un TImage si puedes usar un TDBImage?
Como dice Lepe por qué no usuas un TDBImage, yo lo utilizo para archivos bmp, pero como estos no tienen algunas opciones que tiene el TImage, como por ejemplo saber el tamaño de la foto para centrarla en pantalla, lo que hago es ocultar este componente y agregar un TImage y en el evento correspondiente hago lo siguente
Código Delphi [-]
Timage.Picture = TDBImage.Picture
y después trabajo con el TImage, esto con los archivos bmp, para los jpg utilizo un Stream
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #14  
Antiguo 21-11-2006
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Gracias a todos por vuestra ayuda, haré lo que dice ivanzinho, pero me viene mejor usar un TImage. Un poco frustrante no?

Pd: No he contestado antes porque el trabajo no me ha dado ni un respiro.
Gracias de nuevo, foros como este hacen que no te sientas solo cuando estás haciendo un programa.
Responder Con Cita
  #15  
Antiguo 29-11-2006
k_rito k_rito is offline
Miembro
 
Registrado: nov 2006
Ubicación: Sucre - Bolivia
Posts: 20
Poder: 0
k_rito Va por buen camino
Ya funcionó?

Probe lo que alguien propuso anteriormete y funca, es solo utilizar un TDBimage enlasado a la tabla de la que quieres extraer el picture en BMP, y luego lo muestras en tu Timage con esa instruccion:

logo.Picture:=logoDB.Picture; (Logo= de tipo Timage y LogoDB= de tipo TDBImage)
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
No es tan facil. Gabel Varios 5 30-08-2006 11:53:54
enigma muy fácil Julián Humor 6 11-05-2005 18:02:12
query report ¿Por q sale sale solo el primer registro? acl_gandalf Impresión 2 31-03-2005 02:14:20
Una facil triskel Varios 1 15-10-2003 17:04:30
Antes era re-facil hgiacobone Conexión con bases de datos 1 28-05-2003 22:26:06


La franja horaria es GMT +2. Ahora son las 23:00:19.


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