Imagens e Fotos em Delphi e Lazarus (TImage e TDBImage)

Fala galera da programação, tudo beleza? O Assunto de hoje Imagens com o Delphi e Lazarus.
Tanto em Delphi como em Lazarus, carregar, salvar e excluir imagens no aplicativo é muito fácil. Eles oferece várias classes e componentes para gerenciar imagens em seus programas. Podemos usar componentes úteis como TImage e TDBImage para carregar e salvar imagens. TImage é usado para salvar ou carregar uma imagem em ou de um arquivo. E TDBImage é usado para salvar ou carregar uma imagem de ou para um banco de dados. Vamos verificar em detalhes.
TImage (Disponível em Delphi e Lazarus)
O Componente TImage pode exibir uma imagem de arquivos que terminam em diversas extensões, como por exemplo, ICO, BMP, WMF, WMF, GIF e JPG. A propriedade Picture especifica a imagem que irá aparecer no componente.
Ambas IDEs suportam vários métodos diferentes para atribuir uma imagem para o componente TImage: um método LoadFromFile do TPicture lê gráficos do disco ou o método Assign obtém a imagem da área de transferência.
Abaixo veja algumas propriedades do TImage:

Vejamos alguns exemplos:
Primeiro coloque um TImage em algum formulário juntamente com os componentes OpenPicturedialog e SavePicturedialog, uma vez que, eles serão responsáveis por mostrar onde carregar e salvar a imagem no computador.
Exemplo: Carregar imagem salva no computador
procedure TForm1.btnLoadImgClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
if OpenPictureDialog1.FileName<>'' then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;
end;
Exemplo: Limpar uma imagem carregada no TImage
procedure TForm1.btnDelImgClick(Sender: TObject); begin Image1.Picture := Nil; //Or// Image1.Picture.Assign(Nil); end;
Exemplo: Salvar a imagem que esta no TImage no disco
procedure TForm1.btnSaveImgClick(Sender: TObject);
begin
if SavePictureDialog1.Execute then
begin
if SavePictureDialog1.FileName<>'' then
begin
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
end;
end;
Para você ter uma ideia, meu projeto de exemplo ficou assim:

TDBImage (Disponível em Delphi e Lazarus)
O componente TDBImage é utilizado para exibir uma imagem armazenada em um banco de dados. Ao utilizar TDBImage podemos salvar e recuperar uma imagem diretamente do banco de dados. As propriedades Datasource e DataField especificam o campo do banco de dados que armazena a imagem e que será exibido no controle TDBImage.
Abaixo veja algumas propriedades do TDBImage:

Vejamos alguns exemplos:
Neste exemplo, crie uma aplicação com conexão com o banco de dados e coloque um TDBImage em algum formulário juntamente com os componentes OpenPicturedialog e SavePicturedialog, uma vez que, eles serão responsáveis por exibir onde carregar e salvar a imagem no computador. Também alimente as propriedades DataSource e DataField do TDBImage, conforme seu banco de dados. Assim você verá que o componente praticamente faz tudo p que precisa.
Exemplo com imagens e banco de dados
Agora vamos ver exemplos de como carregar e salvar imagens no banco de dados, nestes exemplos estamos usando os componentes de conexão ADO, mas podem ser adaptados facilmente para qualquer componente de conexão com o banco. Lembrando que os códigos são compatíveis tanto em Delphi como em Lazarus.
Salvando uma imagem no banco de dados
procedure TForm1.btnLoadImgClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
if OpenPictureDialog1.FileName<>'' then
begin
ADOTable1.Edit;
TBlobField(ADOTable1.FieldByName('IMAGE1')).
LoadFromFile(OpenPictureDialog1.FileName);
ADOTable1.Post; //will store the image in DB field//
end;
end;
end;
Limpando o campo
procedure TForm1.btnDelImgClick(Sender: TObject);
begin
ADOTable1.Edit;
TBlobField(ADOTable1.FieldByName('IMAGE1')).Clear;
//or//
TBlobField(ADOTable1.FieldByName('IMAGE1')).Assign(Nil);
ADOTable1.Post; //will clear the image from DB field//
end;
Salvando no disco uma imagem que estava no banco
procedure TForm1.btnSaveImgClick(Sender: TObject);
begin
if SavePictureDialog1.Execute then
begin
if SavePictureDialog1.FileName<>'' then
begin
TBlobField(ADOTable1.FieldByName('IMAGE1')).
SaveToFile(SavePictureDialog1.FileName);
end;
end;
end;
Conclusão
Em resumo, o uso do componente TImage oferece uma maneira eficiente e versátil de lidar com imagens em suas aplicações. Através deste post, exploramos como adicionar, exibir, carregar e salvar imagens usando o TImage, além de aprender a manipular dinamicamente as imagens em tempo de execução. Compreender esses conceitos não apenas permite criar interfaces visuais mais atrativas, mas também abre caminho para uma variedade de aplicações práticas, desde exibir ícones até processar e editar imagens. Ao dominar o uso do TImage e suas funcionalidades, os desenvolvedores Delphi e Lazarus podem criar aplicações mais ricas em recursos e visualmente impressionantes para seus usuários.
Beleza pessoal? Espero que possa ajudar.
Dúvidas ou sugestões? Deixe o seu comentário!
Um abraço e até o próximo post. Valeu!
#Delphi
#Lazarus
#DesenvolvimentoDeSoftware
#Imagens
#TImage
#GiovaniDaCruz
2 comentários
-
-
Oi Euclides, em Firebird costumo usar o campo Blob do tipo binary.
Exemplo:
ALTER TABLE PRODUTO
ADD FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 16384
-
Porque será que nunca colocam a estrutura do Banco de Dados???
Sem o comando de Create da tabela???
Já pensaram? Um Campo Blob tem diversos formatos e opções, indo de Text, até Binary…
Ficamos perdidos com mais esse problema quando as coisas não funcionam.
5 linhas de código e resolveria o problema…