Fórum Foto no Banco de Dados #596759

28/08/2018

0

Galera estou salvando fotos em um banco firebird, queria saber qual a melhor forma de fazer. Li uns postes sobre Base64, porém não sei como fazer via Delphi.

Vou precisar salva mais de uma foto por produto, por esse motivo me preocupo com a performance.

Tenho a seguinte estrutura
CREATE TABLE PRODUTOS_FOTO (
    ID       INTEGER NOT NULL,
    PROD_ID  INTEGER,
    FOTO     BLOB SUB_TYPE 0 SEGMENT SIZE 80
);


Código Delphi
var
  jpg : TJpegimage;
begin
  CdsFoto.Close;
  CdsFoto.CommandText := 'select * from PRODUTOS_FOTO where prod_id = '+CdsProdutoPROD_ID.AsString;
  CdsFoto.Open;
  if opFoto.Execute then
  begin
    if not(DsFoto.DataSet.State in[dsInsert,dsEdit]) then
       DsFoto.DataSet.Insert;

    jpg := TJpegimage.Create;
    try
      CdsFotoPROD_ID.Asinteger := CdsProdutoPROD_ID.AsInteger;
      CdsFotoFOTO.LoadFromFile(opFoto.FileName);
      jpg.LoadFromFile(opFoto.FileName);
      Image1.Picture.Assign(jpg);
    finally
       jpg.Free;
    end;
  end;
Sidney Abreu

Sidney Abreu

Responder

Posts

17/01/2019

Thalles Oliveira

Opa, fala Sidney, tudo bem ?

Seguinte, isso é muito relativo...
Eu uso um campo Domain desta maneira :

Name : DIMAGEM
Field Type : BLOB
Size : 400
Not Null : Unchecked ( Desmarcado )
SubType : Binary
Charset / Collate = Null ( Não preencho nada )

e faço também uma verificação somente para gravar imagens .bmp e .jpg para manter a performance, imagens png e outros formatos acredito que não tem necessidade e já afeta a performance e aumenta e muito o tamanho do banco dependendo da quantidade de imagens....

se ainda precisar posso enviar o código para gravar a imagem no banco, é um pouco extenso mas funciona perfeitamente pra min e você pode ajustar conforme sua necessidade..
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar