ímagem jpg em banco firebird
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?
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
Curtidas 0
Respostas
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
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
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
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
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.
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
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?
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
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?
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
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?
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
19/01/2005
pessoal peço desculpas pelas mensagem seguindas...
é q deu tilt aki...
se tiver como tirar...
é q deu tilt aki...
se tiver como tirar...
GOSTEI 0
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
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,
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