Campo Blob no MySQL - Gravar Imagens

26/05/2004

0

Alô a Todos....

Alguém poderia me dar uma dica de como gravar imagens JPG num campo BLOB
em MYSQL, tenho um programa que necessita fazer isso, mas recebo um erro de
TYPECAST DE CLASSE INVÁLIDO, ao qual não sei o que significa.

Alguém poderia me dar uma luz?

Obrigado
Rafael


Microbios

Microbios

Responder

Posts

30/05/2004

Bolasete

Olá amigo,,, aqui vai um código do meu aplicativo.
Crie os componentes necessários e faça o teste
Té+ Bolasete

procedure TF_Par1.BitBtn7Click(Sender: TObject);
var Bmp: TBitMap; Jpg: TJPEGImage; Stm: TStream;
begin
OpenFoto.InitialDir:=´Diretório das fotos´;
if OpenFoto.Execute then
begin
Bmp:=TBitMap.Create;
Jpg:=TJPEGImage.Create;
try
//[ ] Captura o arquivo Jpg
Jpg.LoadFromFile(OpenFoto.FileName);
//[ ] Abre a tabela
if not (Dy1Par.DataSet.State in [dsEdit, dsInsert]) then Dy1Par.DataSet.Edit;
//[ ] Grava o diretório e o arquivo
Dy1Par.DataSet.FieldByName(´Par_DirSplash´).AsString:=OpenFoto.FileName;
//[ ] Transfere JPG para BMP
Bmp.Assign(jpg);
//[ ] Manda para o visualizador
ZDbImage1.Picture.Assign(bmp);
//[ ] Grava o que está no visualisador
Dy1Par.DataSet.Post;
//[ ] se não for JPG...
except on EInvalidGraphic do
begin
if not (Dy1Par.DataSet.State in [dsEdit, dsInsert]) then Dy1Par.DataSet.Edit;
Dy1Par.DataSet.FieldByName(´Par_DirSplash´).AsString:=OpenFoto.FileName;
//[ ] Captura o arquivo do diretório gravado na tabela
Bmp.LoadFromFile(OpenFoto.FileName);
//[ ] Manda a imagem BMP para o componente
ZDbImage1.Picture.Assign(Bmp);
//[ ] Grava a imagem do visualizador
Dy1Par.DataSet.Post;
end;
end;
//[ ] Libera os componentes criados
Bmp.Free;
Jpg.Free;
end
else
begin
if TBlobField(Dy1Par.DataSet.FieldByName(´Par_Splash´)).BlobSize > 0 then
if Confirma(´Limpar a cache ?´,´Figura´)=IdYes then
begin
if not (Dy1Par.DataSet.State in [dsEdit,dsInsert]) then Dy1Par.DataSet.Edit;
Dy1Par.DataSet.FieldByName(´Par_DirSplash´).AsString:=´´;
Qy1ParPar_Splash.AsVariant:=´´;
Dy1Par.DataSet.Post;
end;
end;
//[ ] LogoSplash é campo Blob para tela do Menú
//[ ] Checa se há imagem gravada
if TBlobField(Dy1Par.DataSet.FieldByName(´Par_Splash´)).BlobSize > 0 then
begin
try
//[ ] Cria os componentes
Bmp:=TBitMap.Create;
Stm:=TMemoryStream.Create;
//[ ] carrega a imagem na memória
TBlobField(Dy1Par.DataSet.FieldByName(´Par_Splash´)).SaveToStream(Stm);
//[ ] Transfere a imagem para o componente criado
Stm.Position:=0;
Bmp.LoadFromStream(Stm);
//[ ] Manda a foto para F_Menu
F_Menu.Image1.Picture.Graphic:=Bmp;
F_Menu.Image1.Update;
//[ ] Libera os componentes
FreeAndNil(Stm);
FreeAndNil(Bmp);
except on EInvalidGraphic do MessageDlg(´Algo deu errado !´, mtWarning, [mbOK], 1);
end;
end else
begin
F_Menu.Image1.Picture.Graphic:=F_Par1.Image1.Picture.Graphic;
F_Menu.Image1.Update;
end;
end;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar