Delphi - JPEG mediante SQL desde BLOB de MySQL

   
Vista:

JPEG mediante SQL desde BLOB de MySQL

Publicado por cesar cesargt@gmai.com (1 intervención) el 24/10/2011 17:28:49
Buen dia a todos tengo un problema con imagenes JPEG desde campo Blob en base de datos MySQL.

Requiero almacenar imagenes JPEG en campo Blob de MySQl mediante sentecial SQL y visualizar las imagenes almacenadas en un campo DBImage o TImage, recuperando mediante sentiencias SQL, es decir sin usar TTable o ADOTable solo usando TSQL.

Pongo el codigo que estoy utilizando para almacenar las fotos en el campo IMAGEN de tipo Blob en la base en MySQL y de igual forma pongo el codigo que utilizo para recuperar las imagenes, hasta este momento no se si las imagenes se almacenan correctamente en el campo blob ya que no logro visualizar las imagenes.

Alguien que me ayude por favor a resolver el problema.
Y aprovechando este mismo codigo podria usarse para almacenar documento en formato DPF?

CODIGO PARA ALMACENAR LAS IMAGENES.
procedure TFormDigitaVale.Button1Click(Sender: TObject);
Var
xSQl:String;
MS : TMemoryStream;
begin
imgFoto.Picture.LoadFromFile('65ca57.jpg'); //imagen que guardo, esto solo es temporal la idea es escanear el documento y guardarlo.
imgFoto.Stretch:=TRUE; //imgFoto es un componente TImage que permita visualizar la imagen que se almacena

with DM1.QueryDM do
begin
Close;
SQL.Clear;
xSQL := ' Insert into repositorio (IDAlmacen,Anio,NoFacReq,Titulo,Imagen) ';
xSQL := xSQL + ' Values (0,"2011","'+EditNumSalida.Text+'","descipcion de documento",:xDocumento)'; //EditNumSalida es el folio que asigno a la imagen para despues recuperar
SQL.Add(xSQL);
ParamByName('xDocumento').DataType := ftBlob; //se supone indico al campo blob que la imagen es blob
ParamByName('xDocumento').LoadFromFile('65ca57.jpg', ftBlob); //cargo la imagen en campo blob
ExecSQL; // ejecuto el SQL
end;
end;


CODIGO USADO PARA RECUPERAR LA IMAGEN DESDE CAMPO BLOB de MySQL
procedure TFormDigitaVale.Button2Click(Sender: TObject);
var
imgJPG:TJpegImage;
blobF:TBlobField;
// Jpeg:TJpegImage;
Corriente:TMemoryStream;
fs : TMemoryStream;

xSQl:String;
begin
imgJPG := TJpegImage.create;
with DM1.QueryRepositorio do begin

SQL.Clear;
SQL.Add('SELECT * FROM repositorio WHERE IDAlmacen= 0
' and anio=2011 and NoFacReq='+EditNumSalida.Text+' ');
Open;
if RecordCount = 1 then begin
(FieldByName('imagen') as TBlobField).SaveToStream(fs);
imgJPG.LoadFromStream(fs);
with DM1.TableRepositorioImagen do begin
imgFoto.Picture.Assign(imgJPG); // imgFOTO es un componente TImage
imgFoto.Visible := True;
ImgFoto.Refresh;
end;
end;
// Close; //Evito cerrar el query que recupera la consulta pensado que se cerraba y que la imagen ya no se visualizaba
end;
fs.Free;
imgJPG.Free;
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

JPEG mediante SQL desde BLOB de MySQL

Publicado por E.T. (1107 intervenciones) el 25/10/2011 00:52:12
Que tal Cesar, para guardar imagenes yo utilizo el siguiente codigo, pero en mi caso yo lo uso para imagenes PNG, no sería complicado ajustarlo a jpg

1
2
3
4
5
6
7
with query1 do begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE tabla SET imagen = :blbLogo');
    ParamByName('blbLogo').LoadFromFile(txtRutaLogo.Text, ftGraphic);
    ExecSQL;
  end;


Y para recuperarla es el siguiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
    fldCampo : TField;
    stStream : TStream;
    pngImagen: TPNGObject;
 
    with dmDatos.qryModifica do begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM tabla');
        Open;
 
        try
          fldCampo := FieldByName('logo');
          stStream := CreateBlobStream(fldCampo, bmRead);
          pngImagen := TPNGObject.Create;
          pngImagen.LoadFromStream(stStream);
          imgLogo.Picture.Assign(pngImagen);
          pngImagen.Free;
        except
        end;
    end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JPEG mediante SQL desde BLOB de MySQL

Publicado por Cesar (1 intervención) el 26/10/2011 19:16:35
E.T.

Gracias voy a probar lo que me indicas y espero que funcione.

Estuve viendo algo curioso que pasa con este programita que quiero hacer y me di cuenta que no es lo mismo imagenes JPG que JPEG o por lo menos a mi me da errores con las JPG al querer usarlas, me parece curioso que en la internet en forosde delphi nadie haya comentado esto.

Salu2.
Y nuevamente muchas gracias en cuanto lo pruebe les escribo mis comentarios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar