Buscar

Salvar imagem completa no mysql

Código

{
Vi muitas rotinas por ai...fiz uma mescalgem e consegui fazer uma que funcionasse...
Essa rotina grava a imagem completa (não so o caminho) no banco de dados no caso MYSQL...
Crie uma tabela no banco de dados e no campo onde vai a imagem coloque-o do tipo longblob
(pq usar longblob? Esse tipo de campo armezena arquivos binarios no nosso caso imagens
com tamanho grandes..assim melhor que usar o blob ou mediumblob que armazenam imagem medias
e pequenas respectivamente...

Na USES do form declare : DBTables , db

logo abaixo do uses declare:
 const
  OffsetMemoryStream : Int64 = 0;

}


//
//busca a imagem geralmente atribuido no onclick de um botão
// esse Timage é um componente da palete additional
//
 if OPPicture.execute then
  Timage.Picture.LoadFromFile(OPPicture.FileName);


// salva a imagem no banco
//
var sqltexto : string;
    jpg1 : TJpegImage;
BEGIN
    if OPPicture.FileName <>'' then
      begin
       jpg1 := TJpegImage.Create;
       jpg1.LoadFromFile(OPPicture.FileName);
       nome_da_tabela.FieldByName('nome_do_campo_da_imagem').Assign(jpg1);
       jpg1.Free;
      end
      else
        Begin
         nome_da_tabela.FieldByName('nome_do_campo_da_imagem').value     := '';
        End;
END:

// Puxa imagem do banco e jogua para o Timage
//
procedure ExibeFoto(DataSet : TDataSet; BlobFieldName : String; ImageExibicao :
TImage);
begin
  if not(DataSet.IsEmpty) and
  not((DataSet.FieldByName(BlobFieldName) as TBlobField).IsNull) then
    try
      MemoryStream := TMemoryStream.Create;
      Jpg := TJpegImage.Create;
      (DataSet.FieldByName(BlobFieldName) as
TBlobField).SaveToStream(MemoryStream);
      MemoryStream.Position := OffsetMemoryStream;
      Jpg.LoadFromStream(MemoryStream);
      ImageExibicao.Picture.Assign(Jpg);
    finally
     // Jpg.Free;
      MemoryStream.Free;
    end
  else
    ImageExibicao.Picture := Nil;
end;

//chama a procedure...colocar em algum evento eu uso no ONSHOW
 ExibeFoto(nome_da_tabela,'nome_do_campo_da_imagem',Timage);


//Deletar a imagem do Timage..colocoque um botão deletar no onclick declare:

OpPicture.FileName := '';     // limpa o caminho do arquivo
Timage.Picture:=nil;
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 25/03/07
Por: Ande
Visualizada: 26516 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009