Author: Glenn Randers-Pehrson
Pngcrush |
O Pngcrush é um otimizador para arquivos PNG (Portable Network Graphics). Ele pode ser executado a partir de uma linha de comando em uma janela do MSDOS, ou a partir de uma linha de comando UNIX ou LINUX.
Seu objetivo principal é reduzir o tamanho do fluxo de dados IDG do PNG ao tentar vários níveis de compressão e métodos de filtro PNG. Ele também pode ser usado para remover pedaços auxiliares indesejados, ou para adicionar alguns pedaços incluindo gAMA, tRNS, iCCP, e pedaços textuais.
Pngcrush, quando estaticamente ligado ao código zlib fornecido, é acreditado para ser imune ao zlib-1.1.3 "dupla-livre" bug, uma vez que por padrão, detecta e rejeita qualquer tentativa "dupla-livre". Ele simplesmente gera uma mensagem "Erro de Descompressão" e rejeita o arquivo. |
Pngcrush é de código aberto e pode ser usado, modificado e redistribuído por qualquer pessoa sem pagar uma taxa. A licença, incorporada no arquivo pngcrush.c, é equivalente, mas não idêntica à licença do libpng encontrada no arquivo png.h.
A versão atual do pngcrush é identificada aqui.
O código-fonte para pngcrush é aqui.
O código-fonte para pngcrush também pode ser encontrado no repositório "pmt" git. Você pode acessá-lo clonando de git.code.sf.net/p/pmt/code ou github.com/glennrp/libpng. "No momento, a fonte pngcrush está localizado no ramo" pngcrush "
Os executáveis binários são aqui. Pngcrush usa libpng e zlib, ambos estão incluídos nesta distribuição de origem pngcrush. Eles são ligeiramente modificados:
- pngconf.h do libpng é modificado para "#include pngcrush.h" que é usado
- para "#define out" partes não utilizadas da biblioteca
- #defina PNG_SETJMP_NOT_SUPPORTED
- #defina PNG_ABORT()
- para definir o IDAT tamanho de buffer para um grande valor e
- zlib é modificado para definir a macro TOO_FAR para 32767 em deflate.c
- Os PNGCRUSH_TIMERS de alta resolução estão incluídos no pngread.c e no pngwutil.c.
- Pngwutil.c é modificado para evitar a avaliação de somas de verificação ADLER32 durante a gravação de saídas de teste.
Se preferir, você pode compilar somente pngcrush.c da distribuição de origem pngcrush e executá-lo com o libpng de ações e o zlib, que podem ser encontrados no site da PNG, www.libpng.org/pub/png/. Se você fizer isto,
- O pedaço iTXt não será suportado se a sua versão do libpng não suportá-lo. Libpng começará a suportar o pedaço iTXt por padrão com a versão 1.4.0.
- Pngcrush será vulnerável a várias condições de estouro que foram corrigidos em agosto de 2004, se você usar uma versão libpng não corrigida anterior à versão 1.2.7 / 1.0.17.
- Pngcrush será vulnerável ao zlib-1.1.3 bug duplo livre, se você ligar pngcrush com zlib-1.1.3 e uma versão de libpng como qualquer 1.0.x que não tenha PNG_USER_MEM_SUPPORTED habilitado.
- TOO_FAR será 4096 em vez de 32767 em deflate.c,
O que resultará em arquivos um pouco maiores e uma execução ligeiramente mais rápida.
- A execução será um pouco mais lenta porque a soma de verificação ADLER32 é Sempre avaliada.
- Alguns resultados detalhados de tempo de alta resolução não serão relatados.
- Também, você será incapaz de ler arquivos PNG errôneos com "Demasiados IDAT's".
Binários pré-compilados para Windows (executados na janela do MSDOS) sao aqui
Um garfo de desenvolvimento pngcrush existe, por Cosmin Truta, com um conjunto de características ligeiramente diferente e espaço de pesquisa. Vejo http://www.cs.toronto.edu/~cosmin/pngtech/optipng/"
Pngcrush é um aplicativo de linha de comando. Se você preferir uma GUI draggity-droppity, vários estão disponíveis, incluindo estes que incorporam pngcrush junto com outros compressores / otimizadores de imagem de linha de comando:
- ImageOptim Para Macs, grátis, licença GPLv2
- Trimage Para Linux, Windows, Mac, livre, licença MIT
A Apple distribui uma versão modificada do pngcrush. Ele afirma ser o pngcrush real e não informar o usuário das alterações como exige a licença pngcrush. Ele cria arquivos que não são fluxos de dados PNG válidos, uma vez que eles começam com o pedaço CgBI em vez do pedaço IHDR.
O pngcrush modificado pela Apple é capaz de reverter as "otimizações do iPhone" (exceto pela inevitável perda de precisão nos valores de cores subjacentes de pixels não opacos). Existem também aplicativos de terceiros, como o domínio público, o código aberto pngdefry aplicação que pode ser encontrada na rede. Estou obrigado a observar que Apple e iPhone são marcas registradas da Apple, Inc.