ímagem jpg em banco firebird

Delphi

19/01/2005

ola

gostaria de saber como posso guarda uma imagem jpg em um banco de dados... visto que o tamanho nesse formato normalmente é muito menor.. e não consegui visualiza-lo... ainda não sei pq? já em bmp consigo... só q requer mais espaço né
usei o TDBImagem ligado no banco...

ah, outra pergunta que eu gostaria de fazer... é se eu tenho oum banco de dados com bastante fotos... e apago elas... o tamanho dele deveria diminuir?
não sei se era alguma problema mais nos testes o banco ficou muito grande e quando apaguei todos os dados continuou do mesmo tamanho... é assim mesmo?


Mrcdlf

Mrcdlf

Curtidas 0

Respostas

Fernando Piccini

Fernando Piccini

19/01/2005

Ola!

Bem! Como tenho a mesma duvida ou tlz ate mais, postei p/ dar sequencia neste tópico postado pelo [u:3e74a9e49b]mrcdlf![/u:3e74a9e49b]

Ah! Se alguem souber de algum tópico do forum que explique como inserir uma figura no banco(firebird), post ai!

vlw :D


GOSTEI 0
Marcio.theis

Marcio.theis

19/01/2005

Pq vc não guarda o caminho da figura? na minha opinião seria mais viável e não aumentaria tanto o banco. Quanto a questão de deletar as informações do BD e não diminuir o tamanho, para mim tb já aconteceu, o que eu fiz e deu certo foi fazer um Backup e Restore da base de dados, depois que eu fiz a base diminuiu e muito.
Mas se quiser salvar as imagens no banco, achei algo relacionado no site:

http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=286


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

19/01/2005

Colega,

Basta utilizar o método LoadFromFile (ou LoadfromStream) do DataSet (no caso IBDataSet ou IBQuery) para guardar qualquer arquivo num Blob do Firebird. O exemplo abaixo e de uma aplicação de GED (Gerenciamento Eletrônico da Documentação) que utilizamos aqui na Empresa. Eu utilizo esse código até num sistema de backups de projetos, onde os mesmo são armazenados após compactados com Zip.
Avalie apenas a quantidade de imagens que serão armazenadas, pois o meu sistema ainda é ´novo´ e ainda não atingiu os 500 MB no FDB.

(qCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile(NomeArquivo+´.PDF´);



GOSTEI 0
Mrcdlf

Mrcdlf

19/01/2005

[quote:2225a88f18=´/]/]@t´]Pq vc não guarda o caminho da figura? na minha opinião seria mais viável e não aumentaria tanto o banco. Quanto a questão de deletar as informações do BD e não diminuir o tamanho, para mim tb já aconteceu, o que eu fiz e deu certo foi fazer um Backup e Restore da base de dados, depois que eu fiz a base diminuiu e muito.
Mas se quiser salvar as imagens no banco, achei algo relacionado no site:

http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=286[/quote:2225a88f18]

o problema de guarda o caminho é que teria q deixar essa pasta compartilhada na rede, correto?
isso iria trazer falta de segurança...
ou não?


GOSTEI 0
Mrcdlf

Mrcdlf

19/01/2005

[quote:a976e5327c=´/]/]@t´]Pq vc não guarda o caminho da figura? na minha opinião seria mais viável e não aumentaria tanto o banco. Quanto a questão de deletar as informações do BD e não diminuir o tamanho, para mim tb já aconteceu, o que eu fiz e deu certo foi fazer um Backup e Restore da base de dados, depois que eu fiz a base diminuiu e muito.
Mas se quiser salvar as imagens no banco, achei algo relacionado no site:

http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=286[/quote:a976e5327c]

o problema de guarda o caminho é que teria q deixar essa pasta compartilhada na rede, correto?
isso iria trazer falta de segurança...
ou não?


GOSTEI 0
Mrcdlf

Mrcdlf

19/01/2005

[quote:aacb71f168=´/]/]@t´]Pq vc não guarda o caminho da figura? na minha opinião seria mais viável e não aumentaria tanto o banco. Quanto a questão de deletar as informações do BD e não diminuir o tamanho, para mim tb já aconteceu, o que eu fiz e deu certo foi fazer um Backup e Restore da base de dados, depois que eu fiz a base diminuiu e muito.
Mas se quiser salvar as imagens no banco, achei algo relacionado no site:

http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=286[/quote:aacb71f168]

o problema de guarda o caminho é que teria q deixar essa pasta compartilhada na rede, correto?
isso iria trazer falta de segurança...
ou não?


GOSTEI 0
Mrcdlf

Mrcdlf

19/01/2005

pessoal peço desculpas pelas mensagem seguindas...
é q deu tilt aki...
se tiver como tirar...


GOSTEI 0
Bon Jovi

Bon Jovi

19/01/2005

o problema de guarda o caminho é que teria q deixar essa pasta compartilhada na rede, correto? isso iria trazer falta de segurança... ou não?

Também acho q sim, o cara na maquina cliente pode simplesmente detonar toda a pasta com um clique. Realmente é mais seguro guardar no banco, não só por isso mas tb por questões de integridade referencial.

Se o Firebird permitisse algo q outros bancos permitem, como poder relacionar tabelas de bases diferentes (um ex.: SqlServer), ou então através do conceito de ´Tablespaces´ (ex.: Oracle e PostgreSql), poderia então separar os dados das imagens, em áreas de armazenamentos diferentes, criando por ex. a tabela CLIENTE (Id_Cliente, Nome_Cliente) numa área de armazenamento e CLIENTE_FOTO (Id_Cliente, Blob_Foto) em outra, eliminando essa questão do peso.

Se integridade referencial das imagens não é problema (coisa q nao aceito muito), existem outras saídas qto a gravar em diretório sem precisar compartilhar diretório:

1 - Via FTP.
2 - Via multicamadas, onde a aplicação cliente envia o arquivo pra aplicação servidora, que estaria no mesmo servidor onde ficam os arquivos.


GOSTEI 0
Marcio.theis

Marcio.theis

19/01/2005

Bom... achei uma forma que aqui nós tb utilizamos para guardar figuras no banco... Temos um campo que guarda a figura e outro campo que guarda a extensão do arquivo.

qryImgFGFIGURA.LoadFromFile(OpenPictureDialog.FileName);
qryImgNMTPFIGURA.Value:=Extensao(OpenPictureDialog.FileName);

a function Extensao somente busca a estensão do arquivo, ou seja, o .jpg ou .bmp.

depois para carregar a imagem nós fizemos o seguinte:

arq:=´c:\XXtemp.´ + qryImagensnmtipofigura.Value;
qryImgFGFIGURA.SaveToFile(arq);
imgFigura.Picture.LoadFromFile(arq);
DeleteFile(arq);

arq -> String;
imgFigura -> Timage;

Sendo que criamos na máquina local do cliente um arquivo temporário, que cria um arquivo de acordo com a extensão da figura, depois carregamos a figura do banco neste arquivo que criamos, e no final deletamos o arquivo temp criado.

Espero ter ajudado,


GOSTEI 0
POSTAR