Fórum ímagem jpg em banco firebird #266042
19/01/2005
0
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
Curtir tópico
+ 0Posts
19/01/2005
Fernando Piccini
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
19/01/2005
Marcio.theis
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
19/01/2005
Aroldo Zanela
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
19/01/2005
Mrcdlf
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
19/01/2005
Mrcdlf
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
19/01/2005
Mrcdlf
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
19/01/2005
Mrcdlf
é q deu tilt aki...
se tiver como tirar...
Gostei + 0
20/01/2005
Bon Jovi
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
20/01/2005
Marcio.theis
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
Clique aqui para fazer login e interagir na Comunidade :)