Fórum Gravar imagem no mysql #347710
22/10/2007
0
Aqui não importa se é a melhor forma de armazenar uma imagem, apenas quero saber como fazer dessa forma. Estou falando isso porque sempre que achei essa pergunta num forum o pessoal ao invez de responder fica dizendo que é melhor salvar numa pasta, etc....
Josinaldo
Curtir tópico
+ 0Posts
22/10/2007
Mayron Cachina
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;
Gostei + 0
06/11/2007
Josinaldo
Gostei + 0
06/11/2007
Mayron Cachina
mais ve esse coódigo ai que o amigo lucasfss me passou...
Var BinFile: TMemoryStream; JPG: TJPEGIMAGE; begin JPG := TJPEGIMAGE.Create; JPG.Assign(ImageFormPrincipal.Picture.Bitmap); OpenPictureDialog.Execute; DMVendaseServicos.SQLQuerySenhasdeAcesso.Close; DMVendaseServicos.SQLQuerySenhasdeAcesso.SQL.Clear; Try BinFile := tmemorystream.Create; jpg.SaveToStream(binfile); DMVendaseServicos.SQLQuerySenhasdeAcesso.SQL.Add(´update SENHAS_DE_ACESSO set WALLPAPER =(:IMG) where CODIGO =(:X)´); DMVendaseServicos.SQLQuerySenhasdeAcesso.ParamByName(´X´).AsString := RecebeIDOperador; DMVendaseServicos.SQLQuerySenhasdeAcesso.ParamByName(´IMG´).LoadFromFile(OpenPictureDialog.FileName , ftBlob); // Tabela.ParamByName(´BLOBDATA´).LoadFromStream(Binfile, ftblob); DMVendaseServicos.SQLQuerySenhasdeAcesso.ExecSQL(); except begin showmessage(´Erro Gravando Imagem´); binfile.Destroy; exit; end; end; binfile.Destroy; DMVendaseServicos.SQLQuerySenhasdeAcesso.Active := False;
Gostei + 0
06/11/2007
Josinaldo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)