Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2009
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
En este caso no se utiliza otro campo para el formato.

Para probar en un Formulario (Form1) pones:
Un TOpenPictureDialog y lo nombras OpenPictureDialog,
Un TButton y Lo Nombras ButtonCargarImagen,
Un TButton y lo Nombras MostrarImagen,
Un TButton y lo Nombras BorrarImagen,
Un TImage y lo Nombras ImageFoto,
Además en DataModule1 existe una tabla de InterBase IBTPersonas con un campo tipo Blob llamado Foto (Enlazada a la correspondiente base de datos).
Tambien puedes poner un DbGrid enlazado a la Tabla mediante el DataSource correspondiente para seleccionar el registro con que quieras experimentar.

Adicionar en el Uses JPEG

Para cargar la Imagen (bmp, jpg, ico) con el diálogo directamente a la base de datos:
Código Delphi [-]
procedure TForm1.ButtonCargarImagenClick(Sender: TObject);
var
  Jpg: TJpegImage;
  Stream: TMemoryStream;
  FileExt: string;
  GraphType: TGraphType;
begin
  if OpenPictureDialog.Execute then
     begin
      Jpg := nil;
      Stream := nil;
      try
        Stream := TMemoryStream.Create;
        FileExt := LowerCase(ExtractFileExt(OpenPictureDialog.FileName));
        if (FileExt = '.bmp') or (FileExt = '.dib') then 
          begin
             GraphType := gtBitmap;
             Stream.Write(GraphType, 1);
             with ImageFoto.Picture.Bitmap do 
                begin
                   LoadFromFile(OpenPictureDialog.FileName);
                   ImageFoto.Picture.Bitmap.SaveToStream(Stream);
                end;
          end 
          else if (FileExt = '.ico') then 
                begin
                   GraphType := gtIcon;
                   Stream.Write(GraphType, 1);
                   with ImageFoto.Picture.Icon do 
                      begin
                         LoadFromFile(OpenPictureDialog.FileName);
                         ImageFoto.Picture.Bitmap.SaveToStream(Stream);
                      end;
                end 
          else if (FileExt = '.emf') or (FileExt = '.wmf') then 
                begin
                   GraphType := gtMetafile;
                   Stream.Write(GraphType, 1);
                   with ImageFoto.Picture.Metafile do 
                      begin
                         LoadFromFile(OpenPictureDialog.FileName);
                         ImageFoto.Picture.Bitmap.SaveToStream(Stream);
                      end;
                end 
          else if (FileExt = '.jpg') or (FileExt = '.jpeg') or (FileExt = '.jpe') then 
                begin
                   Jpg := TJpegImage.Create;
                   Jpg.LoadFromFile(OpenPictureDialog.FileName);
                   ImageFoto.Picture.Assign(Jpg);
                   GraphType := gtJpeg;
                   Stream.Write(GraphType, 1);
                   Jpg.SaveToStream(Stream);
                end;
      DataModule1.IBTPersonas.Edit;
      Stream.Position := 0;
      DataModule1.IBTPersonasFoto.LoadFromStream(Stream);
     except
      jpg.Free;
      Stream.Free;
      raise;
     end;
     jpg.Free;
     Stream.Free;
   end;
end;

Para Mostrar la Foto almacenada en la base de dastos en el TImage:
Código Delphi [-]
procedure TForm1.MostrarImagenClick(Sender: TObject);
var
  Stream: TMemoryStream;
  Jpg: TJpegImage;
  GraphType: TGraphType;
begin
  Jpg := nil;
  Stream := nil;
  try
    Stream := TMemoryStream.Create;
    DataModule1.IBTPersonasFoto.SaveToStream(Stream);
    if Stream.Size > 0 then 
       begin
          Stream.Position := 0;
          Stream.Read(GraphType, 1);
          case GraphType of
             gtBitmap:   Form1.ImageFoto.Picture.Bitmap.LoadFromStream(Stream);
             gtIcon:      Form1.ImageFoto.Picture.Icon.LoadFromStream(Stream);
             gtMetafile: Form1.ImageFoto.Picture.Metafile.LoadFromStream(Stream);
             gtJpeg:     begin
                               Jpg := TJpegImage.Create;
                               Jpg.LoadFromStream(Stream);
                               Form1.ImageFoto.Picture.Assign(Jpg);
                            end 
             else Form1.ImageFoto.Picture.Assign(nil);  // Limpiar la imagen
         end;
      end 
    else Form1.ImageFoto.Picture.Assign(nil);
  except
    Form1.ImageFoto.Picture.Assign(nil);
  end;
  jpg.Free;
  Stream.Free;
end;

Para Borrar la imagen de la base de datos:
Código Delphi [-]
procedure TForm1.BorrarImagenClick(Sender: TObject);
begin
   ImageFoto.Picture.Assign(nil);
   DataModule1.IBTPersonas.Edit;
   DataModule1.IBTPersonasFoto.Assign(nil);  // Limpiar el campo
end;
__________________
Saludos

Seara2005

Última edición por seara2005 fecha: 17-11-2009 a las 23:27:45.
Responder Con Cita
  #2  
Antiguo 18-11-2009
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola,
yo tengo una tabla con la clave y la imagen. Previamente a la carga en la BBDD comprimo los archivos ( pueden ser de cualquier tipo ) ylógicamente previo a mostarlos los descompprimo en una unidad temporal.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 19-11-2009
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola amigos, logré insertar una foto, pero el problema que tengo ahora es que al momento de recuperar la foto de la db, me muestra un error de incompatibilidad. "incompatible cast type"

la forma en como declaro el campo es:
Código SQL [-]
campofoto blob subtype 0 segment size 80
.

le agradezco infinitamente que me puedan ayudar... y de antemano muchas gracias por vuestro tiempo...
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
Imagenes en Firebird 2 trex2000 Firebird e Interbase 1 27-12-2007 00:17:23
Firebird 1.5.3 Error:No puede ejecutarse Firebird Guardian xq ya hay una instancia Delphius Firebird e Interbase 5 26-01-2007 10:19:20
¿Que tipo de imágenes soporta firebird? Delphius Firebird e Interbase 12 13-10-2006 19:33:58
Insertar Imagenes en Firebird (y la madre que lo pario!!!) papulo Firebird e Interbase 7 23-11-2005 16:13:07
Imagenes(BLOB) Firebird con VB6 pzhero Firebird e Interbase 5 06-05-2004 15:32:45


La franja horaria es GMT +2. Ahora son las 16:51:22.


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