Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Porqur al asignar una imagen a un campo la pierdo ?

Hola foreros !!!

Tengo un campo BLOB en una tabla

Cargo la imagen, que se encuentra en un fichero externo

DBIc1.Picture.LoadFromFile(OpenDialog1.FileName);

Hasta aqui todo ok, la imagen se visualiza en el TDBImage, pero cuando quiero cargar dicha imagen en el campo para poder grabarla, esta desaparece, al hacer:

DBIc1.Field.Assign( DBIc1.Picture )

Se me queda el campo TDBImage en blanco y en el buffer no hay nada que grabar en la BD.

Cualquier orientacion sera bien recibida !!!

Gracias anticipadas a todos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #2  
Antiguo 30-08-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 18
JosepGA Va por buen camino
hola, yo lo que hago es asignar a la imagen a un componente tImage con:

Código Delphi [-]Image.Picture.LoadFromFile( sNombreArchivo );


luego cuando lo quiero asignar a la tabla lo hago de la siguiente forma:

Código Delphi [-]DBIc1.Picture.Graphic.Assign( Image.Picture.Graphic );
DBIc1.LoadPicture;


el hacerlo mediante un tImage lo hago ya que en ocasiones al hacerlo con un tDBImage me ha dado problemas, y haciendo pruebas de esta forma me lo hizo bien.
Responder Con Cita
  #3  
Antiguo 30-08-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Igual te da ese problema si la imagen está en JPG, yo la convierto a BMP de 15bits al momento de guardarla y así no tengo ningún problema.
Responder Con Cita
  #4  
Antiguo 30-08-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Si uso DBIc1.CopyFromClipboard funciona bien, aunque sea un JPG. El problema solo viene si hago la carga desde un fichero e intento asignarla al DBImage.

Saludos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #5  
Antiguo 30-08-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
para ese caso haces lo que dice JosepGA
Código Delphi [-]
Image.Picture.LoadFromFile( sNombreArchivo );
DBIc1.Picture.Assign( Image.Picture);
Responder Con Cita
  #6  
Antiguo 30-08-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Mejor utiliza el TBlobField

Prueba este código
Código Delphi [-]
miTabla.Edit; //.....
TBlobField(miTabla.FieldByName('CampoImagen')).LoadFromFile(OpenDialog1.FileName);

....

en esencia ese es el código que creo yo te servirá
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 31-08-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Varias cuestiones:

La solución de D&W me parece muy buena, pero solo funciona si la imagen es BMP. Con JPG da error.

La solucion de mightydragonlor, de pasar a BMP me parece interesante, y ya puestos me gustaria me orientaras como pasar a BMP un JPG. Pero en este caso no quiero cambiar la imagen.

Y la solución de JosepGA, es la que me ha funcionado correctamente.

Muchas gracias a todos por vtra colaboración.

Saludos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #8  
Antiguo 31-08-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
De esta manera cambias el formato y la profundidad del la imagen a BMP, no altera el tamaño original.

Código Delphi [-]
function ToBMP(g: TGraphic): TBitMap;
begin
  try
    Result:=TBitmap.Create;
    Result.Width:= g.Width;
    Result.Height:= g.Height; 
    Result.Palette:=g.palette;
    Result.PixelFormat:=pf15bit;
    Result.Canvas.Draw(0,0,g);
  except
    Result:=nil;
  end;
end;
Responder Con Cita
  #9  
Antiguo 31-08-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.411
Poder: 22
fjcg02 Va camino a la fama
Yo utilizo esto y me va bien. El código está asociado a un botón de cargar imagen.

Código Delphi [-]
OpenPictureDialog1.Execute;
if OpenPictureDialog1.Filename <> '' then
begin
  if not (TMapas.State in [dsInsert,dsEdit]) then TMapas.Edit;
  DBImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end;
Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #10  
Antiguo 03-09-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
Cierto, el código propuesto por fjcg02, funciona perfectamente. Muchas gracias.

Y gracias a mightydragonlor, por la function ToBmp. Por cierto solo me queda una duda, no es necesario liberar el puntero a TBitmap.Create ???

Saludos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
  #11  
Antiguo 04-09-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
No, por que si te fijas es el result y si lo liberas tendras un error por que no existiria el resultado de la función;
Responder Con Cita
  #12  
Antiguo 04-09-2007
[QuarkBcn] QuarkBcn is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Barcelona
Posts: 92
Poder: 18
QuarkBcn Va por buen camino
No, si eso lo entiendo, pero eso significa que ese puntero se libera automáticamente ???

Saludos !!!
__________________
Los árboles no me dejan ver el bosque !!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Asignar a un campo un select max el_barto Conexión con bases de datos 1 23-06-2005 18:19:20
¿como asignar una imagen de una BD a un Image? scotex Conexión con bases de datos 3 20-02-2005 12:16:14
asignar a una imagen un objeto ole... pzala Conexión con bases de datos 5 21-01-2005 16:05:46
Asignar una imagen a un ToolButton Javi2 Varios 1 17-01-2005 18:46:36
Como asignar una imagen a un TBitBtn Javi2 Varios 2 17-01-2005 12:38:11


La franja horaria es GMT +2. Ahora son las 09:02: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