![]() |
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.:o |
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 |
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 |
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.:confused: |
si es bitmap es timage.picture.bitmap, si no me equivoco.
|
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.;) |
pues deberias hacer lo mismo que con un jpeg, cargarlo con un stream
|
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. |
creo que las lineas que cargan la imagen en el control deberia ser algo como (de memoria sin confirmarlo)
espero qeue te sea de ayuda. Oscar Noe |
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 |
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.:o |
¿Por qué usar un TImage si puedes usar un TDBImage?
Saludos |
Cita:
y después trabajo con el TImage, esto con los archivos bmp, para los jpg utilizo un Stream |
Gracias a todos por vuestra ayuda, haré lo que dice ivanzinho, pero me viene mejor usar un TImage. Un poco frustrante no?:confused:
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.:D |
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) |
La franja horaria es GMT +2. Ahora son las 20:42:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi