Fórum fotos no banco de dados #245206

31/07/2004

0

eu testei algumas dicas publicadas mas as que tentam gravar jpeg no bd não dão certo alguém já fez funcionar?
faz tempo que tento.
bmp da certo mas o tamanho é o problema...


Crcam

Crcam

Responder

Posts

31/07/2004

Lucas Silva

Colega,
Isso deixa o banco muito pesado...
Pense duas vezes antes de fazer isto!


Responder

Gostei + 0

31/07/2004

Marcelo.c

Há uma discussão sobre o assunto neste [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=47439&highlight=fotos]tópico[/url].


Responder

Gostei + 0

31/07/2004

Bon Jovi

Guardar em diretório não é uma solução ruim, mas isso é arriscado qto a integridade. Como garantir que as fotos num diretório estarão com integridade referencial em relação a tabela no banco? Garantir integridade de dados via programa é meio q voltar aos tempos de soluções Clipper.

Qto a ficar pesado, somente se for usado dados normais e BLOBS no mesmo banco de dados aí realmente fica uma solução ruim. Usando um bom SGDB, que permita relacionamento entre base de dados diferentes, basta ter uma base pra guardar tabelas de fotos e outra pra tabelas de dados normais. Tipo:
BancoNormal..TAB_FOTOS (Id_Foto[PK], Descricao)
BancoFotos..TAB_FOTOS_BLOB (Id_Foto[FK], ArquivoBlob).

Segue solução ilustrativa usando DBImage:

procedure TForm1.EscolheImagem(Imagem: TDBImage); 
var 
  oJPEG: TJPEGImage; 
  oDialogo: TOpenPictureDialog; 
  oPicture: TPicture; 
begin 
  if not Assigned(Imagem) then 
    Exit; 

  if (not Assigned(Imagem.DataSource)) or (Imagem.DataField = ´´) then 
    Exit; 

  if not Assigned(Imagem.DataSource.DataSet) then 
    Exit; 

  if not (Imagem.DataSource.DataSet.Active) then 
    Exit; 
      
  oDialogo := TOpenPictureDialog.Create(nil); 
  try 
    oDialogo.Options := [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]; 
    oDialogo.Filter := ´Imagens (*.jpg;*.jpeg;*.bmp)|*.jpg;*.jpeg;*.bmp´; 
    oPicture := TPicture.Create; 
    try 
      oJPEG := TJPEGImage.Create; 
      try 
        if oDialogo.Execute then 
        begin 
          oPicture.LoadFromFile(oDialogo.FileName); 
          oJPEG.Assign(oPicture.Graphic); 
          if not (Imagem.DataSource.DataSet.State in dsEditModes) then 
            Imagem.DataSource.DataSet.Edit; 
          Imagem.Picture.Graphic.Assign(oJPEG); 
        end; 
      finally 
        FreeAndNil(oJPEG); 
      end; 
    finally 
      FreeAndNil(oPicture); 
    end; 
  finally 
    FreeAndNil(oDialogo); 
  end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  EscolheImagem(DBImage1); 
end;



Responder

Gostei + 0

31/07/2004

Aroldo Zanela

Colega,

Você pode guardar qualquer tipo de dado num campo do tipo BLOB na maioria dos SGBDs. No caso do IB/FB não é diferente. Eu ratifico a sugestão do colega Bon Jovi e acrescento que, no caso do armazenamento num diretório, você perde na segurança adicional fornecida pela aplicação.


Responder

Gostei + 0

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

Aceitar