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)
-   -   Guardar una imagen en un DB (https://www.clubdelphi.com/foros/showthread.php?t=41572)

lore 19-03-2007 22:27:00

Guardar una imagen en un DB
 
Hola:) Quisiera guardar una imagen en el campo de una tabla. Lo que quiero no es que el campo levante la dirección de un archivo en una máquina, sino lo que quiero es que una imagen se guarde en un campo de la tabla. El motivo de esto es evitar que se vean en un directorio las imágenes.


Saludos:)

Caral 19-03-2007 22:34:11

Hola lore
No veo cual es el problema.
Podrias indicar que base de datos usas.?
Saludos

lore 20-03-2007 06:18:05

Hola. Lo que quiero es que me guarde la imagen en campo blob y nose como hacerlo:confused: . La DB que uso en MySQL. Saludos:)

Neftali [Germán.Estévez] 20-03-2007 11:54:41

Saber los componentes que usas para acceder tampoco vendría mal...

Neftali [Germán.Estévez] 20-03-2007 11:57:02

Una búsqueda en los foros también iría bien; Tal vez llegaría a un sitio como este.

fidel 20-03-2007 18:07:48

Esto funciona en FireBird. Adaptalo a tus necesidades.

Guardado en un campo Blob pero poniendo otro campo Varchar donde se guarda el formato de la foto: bmp o jpg

Se visualiza en TImage

Debes añadir en el uses del form la unit JPG.

Código Delphi [-]
//cargar foto
procedure TFDatos.Cargarfoto1Click(Sender: TObject);
var
  m, f: TStream;
  s: string;
begin
  //se abre picturedialog para cargar fichero foto que se coja
  if dlgOpenPicture.Execute then
    begin
      //modo edición
      DM.IBDSAlumnos.Edit;
      //stream a partir campo Blob que contendrá la imagen
      m:= DM.IBDSAlumnos.CreateBlobStream(DM.IBDSAlumnosFOTO, bmWrite);
      //stream para acceder al archivo gráfico
      f:= TFileStream.Create(dlgOpenPicture.filename, fmOpenRead);
      //copiar de un stream a otro
      m.CopyFrom(f, f.Size);
      //coger formato foto y ponerlo en campo correspondiente
      s:= AnsiUpperCase(ExtractFileExt(dlgOpenPicture.FileName));
      if s='.JPEG' then
        s:= '.JPG';
      DM.IBDSAlumnosFORMATOFOTO.AsString:= Copy(s,2,3);
      DM.IBDSAlumnos.Post;
      //destruir streams
      f.Free;
      m.Free;
    end
end;



//borrar foto
procedure TFDatos.Borrarfoto1Click(Sender: TObject);
begin
  //borrar imangen
  ImageFoto.Picture.Assign(nil);
  //borrar foto del campo blob
  if (DM.IBDSAlumnos.State <> dsEdit) and (DM.IBDSAlumnos.State <> dsInsert) then
    DM.IBDSAlumnos.Edit;
  DM.IBDSAlumnosFOTO.Assign(nil);
  DM.IBDSAlumnos.Post;
end;


//mostrar imagen (evento on change 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
      if DM.IBDSAlumnosFORMATOFOTO.AsString = 'BMP' then
          //si es formato BMP
          ImageFoto.Picture.Graphic:= TBitmap.Create
      else if DM.IBDSAlumnosFORMATOFOTO.AsString = 'JPG' then
          //si es formato JPG
          ImageFoto.Picture.Graphic:= TJpegImage.Create
      else
        Exit;
      //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;


La franja horaria es GMT +2. Ahora son las 08:48:43.

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