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;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009