Zeos + Firebird + Image
Olá.
Não tenho conhecimento de como salvar uma imagem de um Image ou DBImage num campo BLOB do firebird usando ZEOS.
Gostaria de saber como salvar a imagem,carregada num TImage ou DBImage,no banco de dados.
O campo da imagem é 'FOTO'.
Obrigado.
Não tenho conhecimento de como salvar uma imagem de um Image ou DBImage num campo BLOB do firebird usando ZEOS.
Gostaria de saber como salvar a imagem,carregada num TImage ou DBImage,no banco de dados.
O campo da imagem é 'FOTO'.
Obrigado.
Vtrx
Curtidas 0
Respostas
William
27/09/2012
Colega segue um link sobre como gravar o caminho das imagens no banco de dados, dependendo da aplicação pode se tornar inviável gravar imagens direto, o banco pode aumentar e consequentemente ocorrer uma perda de performance.
[url]https://www.devmedia.com.br/como-gravar-caminho-de-imagens-no-banco-de-dados-e-exibi-las-depois/25003[/url]
[url]https://www.devmedia.com.br/como-gravar-caminho-de-imagens-no-banco-de-dados-e-exibi-las-depois/25003[/url]
GOSTEI 0
Vtrx
27/09/2012
Consegui achar o meio de gravar.
O código teste esta em C++,mas é fácil alterar para o delphi.
Agora preciso saber como carregar a imagem.
Alguem?
O código teste esta em C++,mas é fácil alterar para o delphi.
if (OpenPictureDialog1->Execute()) {Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);}
DataModule2->ZQuery1->Close();
DataModule2->ZQuery1->SQL->Clear();
DataModule2->ZQuery1->SQL->Text = "insert into PRODUTOS (COD,FOTO) VALUES (456,:ThePicture)" ;
DataModule2->ZQuery1->Params->Clear();
DataModule2->ZQuery1->Params->CreateParam(ftBlob,"ThePicture", ptInput);
DataModule2->ZQuery1->ParamByName("ThePicture")->LoadFromFile(OpenPictureDialog1->FileName,ftBlob);
DataModule2->ZQuery1->ExecSQL();
//=====================================Agora preciso saber como carregar a imagem.
Alguem?
GOSTEI 0
Alisson Santos
27/09/2012
Amigo uma dica, acho um metodo ruim esse de ficar salvando imagem no banco, pois o seu banco torna ficar um pouco lento para abrir as tabelas e assim por diante, sem contar que ele acaba ficando grande.
O ideal é salvar o caminho que está a imagens e copiar para uma posta especifica.
O ideal é salvar o caminho que está a imagens e copiar para uma posta especifica.
GOSTEI 0
Vtrx
27/09/2012
A quem interessar,fiz a rotina para salvar.
Está em C++,para Delphi a alteração é mínima.
Dou um Select normalmente escolhando os campos que preciso e o campo BLOB.
Usando um TImage;
Estava dando erro no Image quando o campo continha poucos bytes,então fiz o teste do tamanho do Stream antes de abrir a imagem.
Está em C++,para Delphi a alteração é mínima.
Dou um Select normalmente escolhando os campos que preciso e o campo BLOB.
Usando um TImage;
TStream *stream = DataModule2->ZQuery1->CreateBlobStream(DataModule2->ZQuery1->FieldByName("FOTO"),bmRead);
if (stream->Size < 50) {return;}
TImage* img = new TImage(this);
stream->Position = 0;
Image1->Picture->Graphic->LoadFromStream(stream);
stream->Free();Estava dando erro no Image quando o campo continha poucos bytes,então fiz o teste do tamanho do Stream antes de abrir a imagem.
GOSTEI 0
Vtrx
27/09/2012
Correção!
A rotina é para CARREGAR a imagem e não salvar como postei acima!
Lembrando tambem ,que fiz essas mesmas perguntas em 2006(usando ZEOS) e ninguem respondeu,me obrigando na época a salvar o caminho das imagens.
A rotina é para CARREGAR a imagem e não salvar como postei acima!
Lembrando tambem ,que fiz essas mesmas perguntas em 2006(usando ZEOS) e ninguem respondeu,me obrigando na época a salvar o caminho das imagens.
GOSTEI 0