Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con tabla e imagenes (https://www.clubdelphi.com/foros/showthread.php?t=12174)

acrophet 08-07-2004 12:34:39

Problema con tabla e imagenes
 
Pues vereis, tengo la tipica pantalla de mantenimiento de clientes y un timage que uso para visualizar la foto de cada cliente.
En la tabla lo que guardo es el path y nombre de la foto, y cuando visualizo un registro, cargo la foto.
Pues bien, me interesaria poder extraer el nombre de la foto que se esta visualizando en el timage, ya que ahora lo saco de un opendialog, y me da problemas,por lo que necesitaria poder sacar el path y nombre de la imagen desde el propio Timage, pero me estoy volviendo loco y no encuentro la manera de sacarlo.

Un saludo y gracias anticipadas.

Delfino 08-07-2004 13:00:50

Crea un campo oculto donde almacenas el path de la imagen incluyendo el FileName..

Gydba 08-07-2004 13:04:36

Hay algunos formatos de imágenes que permiten almacenar ciertos datos y demás conjunto con la imágen, pero hacer rutinas que manejen eso es un poco innecesario según la cuestión.

Lo mejor sería tener un campo más en la tabla, como bien dijo Delfino, para almacenar esta info.

Saludos...

^TxTeZ^ 08-07-2004 13:10:11

Hombre esta solucion es un poco ñapa pero tb es valida.

Tienes dos funciones que son Pos, Copy y Length para manejar cadenas de caracteres, y puesto que tu tienes almacenado el path pej:

c:\blabla\foto.ext

Puedes buscar la posicion del "." que te indica la posicion de la extension y jugar con el Copy, el Length y el Pos para sacar el nombre del Archivo.

Es mucho mas sencillo lo que te han dicho anteriormente pero a lo mejor no te interesa....

acrophet 08-07-2004 13:34:37

A ver, creo que no me explique bien. Yo ya tengo un campo donde guardo el path+nombre de la imagen.
Ahora bien, me interesaria poder extraer eso del timage cuando ya la tengo cargada.

^TxTeZ^ 08-07-2004 15:44:54

pues creo que del TImage no puedes sacarlo, a menos que yo sepa.

¿Como tienes grabada la imagen en la BD, como campo BLOB o simplemente guardas un String con la ruta de la image?

Bueno en todo caso, dudo que del TImage puedas sacar el nombre del archivo ya que es un Stream

acrophet 08-07-2004 15:56:22

Pues yo lo que hacia era guardar en la bd la ruta de la imagen y de ahi visualizarla en el Timage. Hasta ahi bie, pero cuando queria sacar la ruta de la misma imagen que estaba visualizando, pues venian los problemas.
Visto que no puedo hacer esto que busco, pues me he puesto a intentarlo con un campo blob y el dbimage.
El problema vino, cuando si que me visualiza ficheros jpg, pero no me los guarda en la bd. No tengo ni idea de porque (si, si puse el uses jpeg...), pero solo guarda los bmp en la bd. Total, que me he hecho una rutina que me pasa el jpg a bmp antes de meterlo en la tabla y santas pascuas, que el tema este me tiene ya bastante mareado.

Muchas gracias a todos los que me han ayudado!!!!
Un saludo y hasta la proxima.

^TxTeZ^ 08-07-2004 16:16:44

Yo hago lo siguiente para guardar una imagen:


Código:

procedure TFAFLogos.GuardaLogo;
begin
  try
        with (DataSource1.DataSet as TClientDataSet) do
        begin
          if FAFMLogoCliente.FileName <> '' then
          begin
                Edit;
                (FieldByName('LOGO') as TBlobField).LoadFromFile(FAFMLogoCliente.FileName);
                Post;
          end;
        end;
  except
        Forense.Autopsia (ClassName + '.GuardaFoto');
        raise;
  end;
end;


Delfino 11-07-2004 14:45:21

para guardar imagenes en campo blob yo lo hago asi:

Código:

campoblob.loadfromfile(archivo);
para visualizarlas desde un campo blob lo hago con un TImage pq el TDBImage permite unicamente los bmp:

Código:

procedure TForm1.DataSourceDataChange(Sender: TObject; Field: TField);
var bs : TStream; jp : TJpegImage; buff: Word;
begin
bs := DataSet.CreateBlobStream(CampoBlob,bmRead);
try
bs.Seek(0,soFromBeginning);
if bs.Read(buff,2) > 0 then
begin
bs.Seek(0, soFromBeginning);
case buff of
$4D42: image1.Picture.Bitmap.LoadFromStream(bs);
$0000: image1.Picture.Icon.LoadFromStream(bs);
$0001,$CDD7: image1.Picture.Metafile.LoadFromStream(bs);
$D8FF: begin
jp := TJpegImage.Create;
jp.LoadFromStream(bs);
image1.Picture.Assign(jp);
FreeAndNil(jp);
end
else image1.Picture := nil;
end;
end;
finally
FreeAndNil(bs);
end;
end;

hasta el momento me va muy bien con esta manera, pruebalo a ver si te sirve.

paren 05-10-2004 00:05:00

Valores del Buffer
 
Cita:

Empezado por Delfino
para guardar imagenes en campo blob yo lo hago asi:

Código:

campoblob.loadfromfile(archivo);
para visualizarlas desde un campo blob lo hago con un TImage pq el TDBImage permite unicamente los bmp:

Código:

...
 case buff of
 $4D42: image1.Picture.Bitmap.LoadFromStream(bs);
 $0000: image1.Picture.Icon.LoadFromStream(bs);
 $0001,$CDD7: image1.Picture.Metafile.LoadFromStream(bs);
 $D8FF: begin
 jp := TJpegImage.Create;
 jp.LoadFromStream(bs);
 image1.Picture.Assign(jp);
 FreeAndNil(jp);
 end
...

hasta el momento me va muy bien con esta manera, pruebalo a ver si te sirve.

Hola delfino, de donde sacaste los valores del buffer??
Por ejemplo que valor usar si el archivo es un gif o un png o un wmf :confused:


La franja horaria es GMT +2. Ahora son las 16:04:55.

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