Pergunta

Eu quero decodificar arquivos JPEG e obter a saída decodificada descompactado em BMP / RGB format.I estou usando GNU / Linux, e C / C ++.

Eu tinha um olhar libjpeg, mas parecia não haver nenhuma documentação boa disponível. Então, minhas perguntas são:

  1. Onde está a documentação sobre libjpeg?
  2. Você pode sugerir outras bibliotecas jpeg-descompressão baseadas em C?
Foi útil?

Solução

A documentação para libjpeg vem com o código-fonte. Desde que você não encontrou ainda:

Faça o download do arquivo de código-fonte e abra o arquivo libjpeg.doc . É um arquivo ASCII, não é um documento do Word, então é melhor abri-lo no bloco de notas ou outro editor ASCII.

Existem alguns outros arquivos .doc também. A maioria deles não são tão interessante embora.

Infelizmente não posso recomendar qualquer outra biblioteca além libjpeg. Eu tentei um par de alternativas, mas Libjpeg sempre ganhava. É muito fácil de trabalhar com uma vez que você tem o básico feito. Também é o mais completo e mais estável jpeg biblioteca lá fora.

Outras dicas

MagickWand é a API C para ImageMagick:

http://imagemagick.org/script/magick-wand.php

Eu não tê-lo usado, mas os olhares de documentação bastante extensa.

Você deve verificar se QImage do Qt. Ele tem uma interface muito fácil que torna esta tarefa muito fácil. A instalação é muito simples para cada plataforma.

Se Qt é um exagero, você pode tentar Magick ++ http://www.imagemagick.org/Magick++/ . Ele suporta operações similares e também é bem adequado para esse tipo de tarefa. A última vez que eu usei, eu lutei um pouco com dependências para ele no Windows, mas não me lembro de muita dificuldade em Linux.

Para a classe de Imagem 's Magick ++, a função que você provavelmente quer é getConstPixels.

Eu tenho o código que você pode copiar (ou apenas usar como referência) para carregar uma imagem de jpeg usando a biblioteca libjpeg.
Você pode procurar o código aqui: http://code.google .com / p / kgui / fonte / browse / trunk / kguiimage.cpp
Basta olhar para a função LoadJPGImage .
O código está configurado para identificador c ++ ligação da minha DataHandle classe a ele para carregar a imagem, de que maneira a imagem pode ser um arquivo ou dados já na memória ou o que quer.

Um pouco fora da solução de caixa é adquirir uma cópia dos netpbm ferramentas, que transformam imagens a partir de praticamente qualquer formato para qualquer outro formato através de um dos vários formatos intermediários muito simples. Eles trabalham bem a partir do shell, e são mais frequentemente utilizados em tubulações de ler alguma imagem arbitrária, realizar uma operação sobre ele, e escrevê-lo para algum outro formato.

Os formatos PBM pode ser tão simples como um cabeçalho ASCII seguido pelos dados RGB em ASCII ou binário. Eles se destinam a ser bastante simples de usar, sem exigida uma biblioteca de implementar.

JPEG é suportado no netpbm por filtros de leitura e gravação que são implementadas no topo da libjpeg.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top