[firebase-br] Sugestão para Blobs Compactos

Giovani Benedetti Penha giovani em cooperval.com
Sex Ago 5 11:26:32 -03 2005


Fala pessoal!

Se não me engano, quando abrimos um JPEG em algum componente de imagem, 
esse componente descompacta a JPEG para exibição (para exibição na tela 
um jpeg tem q ser descompactado, e fica com tamanho igual de um BMP, que 
nada mais é do que um um cabeçalho e um array com cada pixel da imagem).

Então, se pegarmos o conteúdo de memória desse componente de imagem e 
jogarmos no BLOB, na verdade estaremos armazenando uma imagem 
descompactada. O correto seria abrir o JPG de forma crua (não em um 
componente de imagem), usando um MemoryStream talvez ou abrindo "na 
unha" mesmo. Daí  guardaria esse  array de memória  no BLOB.  Então a 
imagem seria salva "as is", ou seja, como JPG mesmo.
Na volta do banco, para exibição na tela, daí sim cria-se um TImage e 
atribui-se o valor recuperado do BLOB como sendo uma imagem JPG.

PS: Nunca fiz isso antes, apenas estou dando uma opinião e possível 
solsobre o caso. Mas talvez seja pelo fato do pessoal guardar o conteúdo 
de memória do componente de imagem é que as imagens ficam grandes no banco.

Ah, e a culpa é claro que não é do Firebird, o campo BLOB guarda um 
array de memória simplesmente...

[]´s
Giovani Benedetti Penha

Andrei Luís escreveu:

>Enio,
>
>Não tenho conhecimento do firebird, mas creio que o campo binário vai
>armazenar o que ele receber, de forma binária... :-)
>
>Resumindo, 'zeros' e 'ums'. Independente do formato, pois o banco não
>vai fazer nada com essa informação, a não ser armazená-la...
>
>Acho que essa informação que te deram é 'balela'.
>
>Mas veja bem, falo isso por achar que é lógico, e não pelo meu
>conhecimento (mínimo) de firebird.
>
>[]s
>Andrei
>
>Em 05/08/05, .:. Enio Marconcini .:. 1010011010 .:.<eniorm em gmail.com> escreveu:
>  
>
>>A idéia não é compactar o JPG para ganhar espaço, pois imagens jpg por mais
>>que sejam compactadas, elas não tem muita diferença.
>>
>>Mas uma vez num forum recebi a informação que, um jpg ao ser gravado num
>>campo blob do IB ela ficava armazenada como BMP. Eu não tenho certeza dessa
>>informação, apenas recebi de um colega aqui.
>>
>>A idéa é, como a imagem vai estar "compactada" ela estará num outro formato,
>>diferente do JPG, quem sabe ao gravar o resultado (arq compactado) economize
>>espaço pois não haveria essa conversão´p/ bmp.
>>
>>Me corrijam se estiver errado.
>>
>>On 8/5/05, eduardo <eduardo em icontroller.com.br> wrote:
>>    
>>
>>>Oi Enio
>>>
>>>Como vc dise, Jpg já é compacto. Não se ganha prarticamente nada com
>>>isso. O que se pode fazer para ganhar espaço e agilidade é ter uma
>>>rotina que lê o arquivo do disco e a reduz (Stretch) para um tamanho
>>>máximo. No meu caso utilizo 120x160 pixels (proporcional a 3x4) o que
>>>resulta em imagens entre 5 e 16 kb dependendo da resolução da imagem. O
>>>problema não é só o banco crescer, mas o tráfego de rede que isso gera.
>>>O pessoal armazena imagens de câmera digital, muitas vezes maior que
>>>1MB. Colocando fora do banco vc previne o banco de crescer, mas não o
>>>peso de transitar pela rede e consumir memória para exibir imagens tão
>>>grandes.
>>>
>>>[]s Eduardo
>>>
>>>
>>>
>>>.:. Enio Marconcini .:. 1010011010 .:. wrote:
>>>      
>>>
>>>>Salve!
>>>>Galera, muito e muito eu vejo pessoas com problemas para armazenas
>>>>        
>>>>
>>>imagens
>>>      
>>>
>>>>(ou outros arquivos) em campos blobs no IB/FB, eu mesmo já suei a testa
>>>>        
>>>>
>>>com
>>>      
>>>
>>>>isso, dai resolvi abandonar e gravar apenas os paths das imagens.
>>>>Num forum, um carinha disse que, ao ser gravada, imagem JPG acaba
>>>>        
>>>>
>>>ficando
>>>      
>>>
>>>>grande etc. Então logo se nota que o tamanho do banco só tende a
>>>>        
>>>>
>>>engordar.
>>>      
>>>
>>>>Me passou na cabeça uma coisa que talvez resolva, mas precisa testar, eu
>>>>ainda não implementei, apenas me surgiu a ideia.
>>>>Se antes de gravar o blob no banco, compactar o arquivo? Se bem que
>>>>        
>>>>
>>>imagens
>>>      
>>>
>>>>JPG quase não tem redução num processo de compactação.........
>>>>Nos links abaixo tem um código para usar no Delphi uma tal zLib.pas para
>>>>compactar, quem sabe se compactar a imagem, e logo após gravar no banco
>>>>        
>>>>
>>>esse
>>>      
>>>
>>>>arquivo compactado, talvez teria um resultado satisfatório.
>>>>Compactação Utilizando zLib
>>>>http://forum.clubedelphi.net/viewtopic.php?t=65509&highlight=zlib
>>>>Zipar sem ZipMaster
>>>>http://forum.clubedelphi.net/viewtopic.php?t=61329&highlight=zlib
>>>>Eu ando meio enrolado e não tenho tempo pra testar isso, e mesmo por
>>>>enquanto não vou precisar de nada parecido como gravar imagens no banco.
>>>>Então, deixo ai uma sugestão para que alguma pessoa que esteja
>>>>        
>>>>
>>>precisando
>>>      
>>>
>>>>disso possa tentar e ver os resultados.
>>>>Não estou esperando que alguém implemente essa idéia pra me devolver o
>>>>        
>>>>
>>>cod,
>>>      
>>>
>>>>é apenas uma sugestão, se servir, viva o Delphi e o Firebird.
>>>>
>>>>        
>>>>
>>>______________________________________________
>>>FireBase-BR (www.firebase.com.br <http://www.firebase.com.br>) - Hospedado
>>>em www.bavs.com.br <http://www.bavs.com.br>
>>>Para editar sua configuração na lista, use o endereço
>>>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>      
>>>
>>
>>--
>>ENIO RODRIGO MARCONCINI
>>.:. msnm: eniorm em gmail.com .:.
>>http://www.delfosdesenvolvimentos.com
>>    
>>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>  
>



Mais detalhes sobre a lista de discussão lista