Jump to content
silentvictor

Ler imagem em C

Recommended Posts

silentvictor

Existe algum comando ou código que faça a leitura de imagens em C?

Tenho que compactar uma imagem com o algoritmo de huffman, dai gostaria de saber se existe algo como

'fopen("imagem.bmp","wb")' que abrisse a imagem.

a imagem é preto e branco e tem 8bits

Edited by silentvictor

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens duas opções:

- criares código para interpretares tu o header do ficheiro .BMP

- usares uma biblioteca que o faça por ti, algo como libbmp

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
nelsonr

Uma imagem não é nada mais que um ficheiro binário.

Experimentaste com esse fopen?

Share this post


Link to post
Share on other sites
silentvictor

O probelama do fopen é que quando for aplicar huffman ele vai perder o cabeçalho =/

Vou dar uma olhada nessa biblioteca, creio que possa me ajudar.

Share this post


Link to post
Share on other sites
HappyHippyHippo

O probelama do fopen é que quando for aplicar huffman ele vai perder o cabeçalho =/

Vou dar uma olhada nessa biblioteca, creio que possa me ajudar.

olha que quando aplicas o algoritmo de compressão, os dados deixam de ser compatíveis com o formato BMP. quanto muito serão passíveis de ser guardados num JPEG


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silentvictor

No caso ele não quer que a imagem seja aberta após ser compactada, apenas que fique menor e consiga voltar para a imagem original.

O unico problema seria perder os dados da imagem.

Share this post


Link to post
Share on other sites
brunoais

Então a única hipotese que tens é usando algoritmos de compressão como o zip, rar, etc... Acho que o zlib pode servir para começar.

De qq modo, comprimir imagens é um processo lento e muito ineficiente. Para imagens muito simples, deve dar para comprimir a uns 95% mas, a maior parte das vezes, ter uma compressão de mais de 99% do original é praticamente impossível.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
silentvictor

Quando abrimos a imagem pelo sublime ele abre com o mapa de cores tipo: "0000 f4f4 8787 98f2 0f00 f4f5 aa87 10f2"

Dai com o huffman conseguimos compactar isso tranquilo, só que o que eu queria era algo que abrisse a imagem desse mesmo modo do sublime. Pq dai o algoritmo que ja fizemos funcionaria corretamente.

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens duas opções:

- criares código para interpretares tu o header do ficheiro .BMP

- usares uma biblioteca que o faça por ti, algo como libbmp


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Rui Carlos

Ainda não percebi por que é que não tratas o bitmap como um simples ficheiro binário, e aplicas o Huffman à sequência de bytes lida. É que o facto do Sublime te mostrar "0000 f4f4 8787 98f2 0f00 f4f5 aa87 10f2" não quer dizer que cada caracter corresponda a um byte no ficheiro (ou seja, não vais tirar partido de só aparecerem algarismos e letras de a a f). Isso são hexadecimais, pelo cada par de hexadecimais já é armazenado num byte. O Huffman só valerá a pena se a distribuição dos bytes não for uniforme (o que em certas imagens irá acontecer).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.