Exportado de http://code.google.com/p/picojpeg. O autor original é Rich Geldreich em richgel99 em gmail.com .
picojpeg é um descompressor JPEG de domínio público escrito em C simples em um único arquivo de origem picojpeg.c e um único cabeçalho picojpeg.h. Ele possui várias propriedades bastante exclusivas que o tornam útil em pequenos dispositivos incorporados de 8/16 bits ou em ambientes com muita memória restrita:
O picojpeg tem várias desvantagens e problemas conhecidos em comparação com outras implementações:
Uma variante aproximada do picojpeg foi compilada e executada com sucesso no microcontrolador PIC18F4610 da Microchip usando o compilador incorporado SourceBoost Technologies BoostC. (Envie um e-mail se desejar ver esta variante.) picojpeg.c também foi usado nas CPUs MSP430 e ARM Cortex-M4. (Para um exemplo de uso, consulte Usando a biblioteca picojpeg em um PIC com módulo LCD ILI9341 320x240).
A distribuição fonte inclui um projeto VS2005 de amostra e executáveis de linha de comando Win32/Win64 pré-compilados que convertem arquivos JPG em TGA usando picojpeg para descompactação. O módulo stb_image.c de domínio público de Sean Barrett é usado para gravar arquivos TGA.
O picojpeg foi originalmente baseado na minha classe C++ de descompressor jpgd, que (em CPUs modernas) é mais rápida e mais capaz que o picojpeg.c, mas usa muito mais memória e assume que os int são de 32 bits.
Aqui está o picojpeg trabalhando em uma CPU 6809 (um Tandy Color Computer 3), compilado usando gcc6809: picojpeg: Decoding Lena em um Tandy Color Computer 3.
v1.1 - 23/03/2020: Corrigido problema de não assinado/assinado na macro, corrigido problema de overflow no decodificador, impedindo a decodificação de JPEGs muito grandes
v1.1 - 19 de fevereiro de 2013: Licença dupla como domínio público e (quando o domínio público não for aceitável) a licença do MIT. Entre em contato comigo para obter a entrega da fonte.
v1.1 - 9 de fevereiro de 2013: Otimizados os loops de linha/coluna IDCT para evitar a transformação inversa completa quando apenas o componente DC é diferente de zero, adicionado modo "reduzir" para decodificação rápida de 1/8 de resolução, melhor tratamento de erros, adicionado suporte para fatores de subamostragem de croma H2V1/H1V2, portado jpg2tga.cpp para jpg2jpg.c (para que todos os módulos sejam escritos em C simples agora), adicionado código para comparar Saída decodificada do picojpeg vs. stb_image'c para teste/verificação.
v1.0 - 10 de novembro de 2010: lançamento inicial. Derivado da versão original que foi testada em uma CPU da série PIC18F.
Obrigado a Daniel Swenson [email protected] por contribuir para o desenvolvimento do picojpeg e a Chris Phoenix [email protected] por seus patches MSP430.
Para qualquer dúvida ou problema com este módulo, entre em contato com Rich Geldreich em richgel99 em gmail.com . Aqui está minha página no Twitter.