Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2005
Nelly Nelly is offline
Miembro
 
Registrado: oct 2005
Posts: 148
Poder: 19
Nelly Va por buen camino
Question como mostrar una imagen a base de un componente

Hola, tengo problemas con mostrar las fotografias de una base de datos(firebird), estoy desarrollando en delphi 7, tengo el siguiente codigo:

Código Delphi [-]
 procedure TfrmFotografias.btnagregarClick(Sender: TObject);
 var
    mijpg:TJPEGImage;
 begin
      if((qryMiembros.Active) and (not qryMiembros.IsEmpty)) then begin
          qryInsFoto.ParamByName('cve_rnm').AsString:=
          qryMiembros.FieldByName('cve_rnm').AsString;
           if OpenPictureDialog1.Execute then begin
              Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
              mijpg:=TJPEGImage.Create;
              mijpg.Assign(Image1.Picture.Graphic);
               if uppercase(copy(ExtractFileExt(OpenPictureDialog1.FileName),1,3))<>'.JP'
               then begin
                 mijpg.CompressionQuality:=30;
                 mijpg.Compress;
               end;
                 mijpg.SaveToFile('c:\temp.jpg');
                 //qryInsFoto.ParamByName('foto').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);
                 qryInsFoto.ParamByName('foto').LoadFromFile('c:\temp.jpg',ftBlob);
                //qryInsFoto.ParamByName('foto').Assign(mijpg);
                 qryInsFoto.ExecSQL;
                 mijpg.Free;
                 qryFotos.Active:=false;
                 qryFotos.ParamByName('cve_rnm').AsString:=
                 qryMiembros.FieldByName('cve_rnm').AsString;
                 qryFotos.Active:=true;
                   if not qryFotos.IsEmpty then begin
                     mijpg:=TJPEGImage.Create;
                     mijpg.Assign(qryFotos.FieldByName('foto'));
                     Image1.Picture.Assign(mijpg);
                     //Image1.Picture.Assign(qryFotos.FieldByName('foto'));
                     mijpg.Free;
                   end;
           end;
      end;
 end;
Este codigo me sirve para insertar las imagenes y ahora ya que estan almacenadas en la base de datos me gustaria visualizarlas en una pantalla de delphi, ¿Pero como hago este proceso?, por medio de un DBImage seria sencillo pero solo estoy manejando formato JPG y el DBImage no acepta ese formato. ¿Pueden ayudarme?.

Última edición por dec fecha: 29-11-2005 a las 00:17:33. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 28-11-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Yo utilizo JvDBImage de la JVCL , para cargar la foto desde un fichero .jpg (u otros):

Código:
dbImg.Picture.LoadFromFile(PictDialog.FileName);
para visualizarla ni siquiera hace falta codigo..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #3  
Antiguo 28-11-2005
Nelly Nelly is offline
Miembro
 
Registrado: oct 2005
Posts: 148
Poder: 19
Nelly Va por buen camino
Quizá no me explique correctamente, lo que sucede, quiero visualizar la foto desde otra ventana, en un Grid se en lista una serie de personas y lo que quiero es conforme vaya bajando el foco la imagen cambie de acuerdo al nombre de la persona. Pero no se como hacer eso.

Cita:
Empezado por Delfino
Yo utilizo JvDBImage de la JVCL , para cargar la foto desde un fichero .jpg (u otros):

Código:
dbImg.Picture.LoadFromFile(PictDialog.FileName);
para visualizarla ni siquiera hace falta codigo..
Responder Con Cita
  #4  
Antiguo 28-11-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Si tienes guardada la foto en un campo blob puedes hacer esto:

Pones un TImage (si, TImage), y en un evento adecuado, por ejemplo en OnDateChange del DataSource que alimenta el grid pones este código (adaptado a tu tabla). Cada vez que cambies de línea en el grid aparecerá la foto correspondiente.

Código Delphi [-]
uses
  Windows .... Jpeg, DB;
.....

//mostrar imagen (evento ondatachange de datasource)
procedure TFDatos.DSAlumnosFDataChange(Sender: TObject; Field: TField);
var
  m: TStream;
begin
  if DM.IBDSAlumnosFOTO.IsNull then
    //para registros sin foto poner imagen vacia
    ImageFoto.Picture := nil
  else
    begin
      //si es formato JPG
      ImageFoto.Picture.Graphic:= TJpegImage.Create
      //copiar los datos desde la tabla con un stream
      m:= DM.IBDSAlumnos.CreateBlobStream(DM.IBDSAlumnosFOTO, bmRead);
      ImageFoto.Picture.Graphic.LoadFromStream(m);
      m.Free;
    end;
end;

Un saludo.
Responder Con Cita
  #5  
Antiguo 29-11-2005
Nelly Nelly is offline
Miembro
 
Registrado: oct 2005
Posts: 148
Poder: 19
Nelly Va por buen camino
Question

Disculpa, pero ¿DM que viene siendo? Es la unica duda que tengo
Cita:
Empezado por fidel
Código Delphi [-]
if DM.IBDSAlumnosFOTO.IsNull then
Responder Con Cita
  #6  
Antiguo 29-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por Nelly
Disculpa, pero ¿DM que viene siendo? Es la unica duda que tengo
Creo qeu es un DataModulo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 30-11-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Efectivamente, DM es el nombre del DataModule donde tengo el DataSet (IBDSAlumnos).

A propósito, para cargar la foto en el campo blob lo hago también con Streams, el código es mucho más corto que el tuyo, si te interesa te lo pongo.

Un saludo.
Responder Con Cita
  #8  
Antiguo 01-12-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

HAber si etso te sirve
Tbdimage
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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


La franja horaria es GMT +2. Ahora son las 12:45:53.


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