Fórum ímagem jpg em banco firebird #266042

19/01/2005

0

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

Responder

Posts

19/01/2005

Fernando Piccini

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


Responder

Gostei + 0

19/01/2005

Marcio.theis

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


Responder

Gostei + 0

19/01/2005

Aroldo Zanela

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´);



Responder

Gostei + 0

19/01/2005

Mrcdlf

[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?


Responder

Gostei + 0

19/01/2005

Mrcdlf

[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?


Responder

Gostei + 0

19/01/2005

Mrcdlf

[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?


Responder

Gostei + 0

19/01/2005

Mrcdlf

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


Responder

Gostei + 0

20/01/2005

Bon Jovi

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.


Responder

Gostei + 0

20/01/2005

Marcio.theis

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,


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar