Fórum Salvar imagem no banco de dados Access #341891
16/05/2007
0
if OpenPictureDialog1.Execute Then begin DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end;
Só que, quando clico sobre a imagem ele apresenta um erro [b:eda0625eac]´Unknowm picture file extension(.JPG)´[/b:eda0625eac] Alterei a extenção da imagem para .BMP ae funcionou. Só que gostaria que fosse em JPG pois o tamanho é menor. Alguém tem uma dica ?
Vagner.oliveira
Curtir tópico
+ 0Posts
16/05/2007
Vagner.oliveira
if OpenPictureDialog1.Execute Then begin DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end;
Outro detalhe, quando coloco a imagem no banco ele aumenta de tamanho (nada de anormal até aqui), só que depois que eu a exclu-o o banco permanesse com o mesmo tamanho. Tem como diminuir o tamanho do banco depois ?
Gostei + 0
17/05/2007
Vagner.oliveira
De quebra ele limita o tamanho da imagem em 15kb, para não atolar o banco de dados. :D
segue o código:
procedure TForm1.Button2Click(Sender: TObject);
var imagem: Tpicture;
F: file of Byte;
begin
{No caso aqui, estou editando um regitro salvo}
ADOTable1.Edit;
{Aqui verifica se a tabela esta sendo editada, se for no modo de inserção, este campo recebe "DsInsert"}
if ADOTable1.State=DsEdit then
begin
if OpenPictureDialog1.Execute then
begin
imagem:= Tpicture.Create();
imagem.LoadFromFile(OpenPictureDialog1.FileName);
AssignFile(F, OpenPictureDialog1.FileName);
Reset(F);
try
if FileSize(F) > 15707 then
ShowMessage(´O arquivo não pode ser maior que 15kb!´)
else
clipboard.Assign(imagem);
DBImage1.PasteFromClipboard;
imagem.Free;
finally
CloseFile(f);
end;
end;
end
else
Showmessage(´Falta editar a tabela´);
end;
Gostei + 0
17/05/2007
Thiago Vidal
No meu exemplo, eu tenho um Form com um Botao ´Carregar Imagem´ chamado ´Button1´ um OpenPictureDialog, um TImage, e um ClientDataSet para exemplificar como trabalhar com campos BLOB:
para salvar a imagem:
procedure TForm1.Button1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then try ClientDataSet1.Edit; ClientDataSet1Imagem.LoadFromFile(OpenPictureDialog1.FileName); if (ClientDataSet1Imagem.Size > 15707) then raise Exception.Create(´O arquivo não pode ser maior que 15kb!´); ClientDataSet1.Post; except ClientDataSet1.Cancel; raise; end; end;
e para carregar, no evento AfterScroll do DataSet:
procedure TForm1.ClientDataSet1AfterScroll(DataSet: TDataSet); var jpg: TJPegImage; bs: TStream; begin jpg := TJPegImage.Create; bs := ClientDataSet1.CreateBlobStream(ClientDataSet1Imagem, bmRead); try jpg.LoadFromStream(bs); Image1.Picture.Assign(jpg); finally bs.Free; jpg.Free; end; end;
Não se esqueça de incluir a unit jpeg à sua lista de uses na seção implementation.
acho que assim o código fica bem mais limpo e elegante.
Gostei + 0
25/02/2016
Ricardo Araujo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)