Gráficos Portáteis de Rede - Portable Network Graphics

Gráficos Portáteis de Rede

Demonstração de transparência PNG 1.png

Uma imagem PNG com um canal de transparência de 8 bits, sobreposta em um fundo quadriculado, normalmente usada em software gráfico para indicar transparência
Extensão de nome de arquivo
.png
Tipo de mídia da Internet
imagem / png
Digite o código PNGf
PNG
Identificador de tipo uniforme (UTI) public.png
Conformação UTI imagem pública
número mágico 89 50 4e 47 0d 0a 1a 0a
Desenvolvido por Grupo de Desenvolvimento PNG (doado ao W3C )
lançamento inicial 1 de outubro de 1996 ; 25 anos atrás ( 01/10/1996 )
Tipo de formato Formato de imagem bitmap sem perdas
Alargado a APNG , JNG e MNG
Padrão ISO / IEC 15948 , IETF RFC 2083
Formato aberto ? sim

Portable Network Graphics ( PNG , oficialmente pronunciado / p ɪ ŋ / PING , às vezes pronunciado / ˌ p i ɛ n I / PEE -en- JEE ) é um raster-gráficos arquivo de formato que suporta sem perdas de compressão de dados . PNG foi desenvolvido como um substituto aprimorado e não patenteado para Graphics Interchange Format (GIF).

PNG oferece suporte a imagens baseadas em paleta (com paletas de cores RGB de 24 bits ou RGBA de 32 bits ), imagens em tons de cinza (com ou sem um canal alfa para transparência) e imagens RGB ou RGBA totalmente coloridas não baseadas em paleta. O grupo de trabalho PNG projetou o formato para transferência de imagens na Internet , não para gráficos de impressão de qualidade profissional; portanto, espaços de cores não RGB , como CMYK, não são suportados. Um arquivo PNG contém uma única imagem em uma estrutura extensível de blocos , codificando os pixels básicos e outras informações, como comentários textuais e verificações de integridade documentadas na RFC 2083.

Os arquivos PNG usam a extensão de arquivo PNG ou pnge são atribuídos ao tipo de mídia MIMEimage/png . PNG foi publicado como RFC 2083 informativo em março de 1997 e como um padrão ISO / IEC 15948 em 2004.

História e desenvolvimento

A motivação para a criação do formato PNG foi a constatação de que, em 28 de dezembro de 1994, o algoritmo de compressão de dados Lempel – Ziv – Welch (LZW) usado no formato Graphics Interchange Format (GIF) foi patenteado pela Unisys . A patente exigia que todo software compatível com GIF pagasse royalties, levando a uma enxurrada de críticas dos usuários da Usenet . Um deles foi Thomas Boutell, que em 4 de janeiro de 1995 postou um tópico de discussão precursor no newsgroup da Usenet "comp.graphics" no qual ele elaborou um plano para uma alternativa gratuita ao GIF. Outros usuários nesse segmento apresentaram muitas propostas que mais tarde fariam parte do formato de arquivo final. Oliver Fromme, autor do popular JPEG viewer QPEG , propôs o nome PING, eventualmente se tornando PNG, um acrônimo recursivo que significa que PING não é GIF , e também a .png extensão . Outras sugestões implementadas posteriormente incluíram o algoritmo de compressão Deflate e suporte a cores de 24 bits , a falta deste último em GIF também motivando a equipe a criar seu formato de arquivo. O grupo se tornaria conhecido como Grupo de Desenvolvimento PNG e, à medida que a discussão se expandia rapidamente, mais tarde ele usou uma lista de e-mails associada a um fórum da CompuServe .

A especificação completa do PNG foi lançada sob a aprovação do W3C em 1 de outubro de 1996 e, posteriormente, como RFC 2083 em 15 de janeiro de 1997. A especificação foi revisada em 31 de dezembro de 1998 como versão 1.1, que tratava de problemas técnicos para correção de gama e cor . A versão 1.2, lançada em 11 de agosto de 1999, adicionou o iTXtfragmento como a única alteração da especificação, e uma versão reformatada de 1.2 foi lançada como uma segunda edição do padrão W3C em 10 de novembro de 2003 e como um padrão internacional ( ISO / IEC 15948: 2004 ) em 3 de março de 2004.

Embora GIF permita animação , foi decidido que PNG deve ser um formato de imagem única. Em 2001, os desenvolvedores do PNG publicaram o formato Multiple-image Network Graphics (MNG), com suporte para animação. O MNG obteve suporte moderado a aplicativos, mas não o suficiente entre os navegadores da web convencionais e nenhum uso entre designers ou editores de sites. Em 2008, alguns desenvolvedores do Mozilla publicaram o formato Animated Portable Network Graphics (APNG) com objetivos semelhantes. APNG é um formato nativamente suportado por navegadores da web baseados em Gecko e Presto e também é comumente usado para miniaturas no sistema PlayStation Portable da Sony (usando a extensão de arquivo PNG normal). Em 2017, os navegadores baseados em Chromium adotaram o suporte APNG . Em janeiro de 2020, o Microsoft Edge tornou-se baseado no Chromium , herdando assim o suporte para APNG . Com isso, todos os principais navegadores agora suportam APNG.

Grupo de Trabalho PNG

A especificação PNG original foi criada por um grupo ad hoc de especialistas e entusiastas em computação gráfica . As discussões e decisões sobre o formato foram conduzidas por e-mail. Os autores originais listados na RFC 2083 são:

Formato de arquivo

A imagem PNG PNG-Gradient.pngvisualizada com um aplicativo editor hexadecimal para Ubuntu .

Cabeçalho do arquivo

Um arquivo PNG começa com uma assinatura de 8 bytes (consulte a imagem do editor hexadecimal à direita):

Valores ( hex ) Propósito
89 Tem o bit alto definido para detectar sistemas de transmissão que não suportam dados de 8 bits e para reduzir a chance de um arquivo de texto ser interpretado erroneamente como PNG ou vice-versa.
50 4E 47 Em ASCII , as letras PNG , permitem que uma pessoa identifique o formato facilmente se for visualizado em um editor de texto.
0D 0A Um final de linha no estilo DOS (CRLF) para detectar a conversão de final de linha do DOS-Unix dos dados.
1A Um byte que interrompe a exibição do arquivo no DOS quando o tipo de comando é usado - o caractere de fim de arquivo .
0A Um final de linha no estilo Unix (LF) para detectar a conversão de final de linha do Unix-DOS.

"Pedaços" dentro do arquivo

Após o cabeçalho, vem uma série de pedaços , cada um dos quais transmitindo certas informações sobre a imagem. Os pedaços se declaram como críticos ou auxiliares , e um programa que encontra um fragmento auxiliar que não entende pode ignorá-lo com segurança. Esta estrutura de camadas de armazenamento baseado em pedaço, similar em conceito a um formato contêiner ou para Amiga ' s IFF , é projetado para permitir que o formato PNG para ser estendido, mantendo a compatibilidade com versões mais antigas do-it fornece compatibilidade futura , e esta mesma estrutura de arquivo ( com assinaturas e blocos diferentes) é usado nos formatos MNG , JNG e APNG associados .

Um bloco consiste em quatro partes: comprimento (4 bytes, big-endian ), tipo / nome do bloco (4 bytes), dados do bloco (bytes de comprimento) e CRC (código de redundância cíclica / soma de verificação; 4 bytes). O CRC é um CRC-32 de ordem de byte de rede calculado sobre o tipo de bloco e dados de bloco, mas não o comprimento.

Comprimento Tipo de pedaço Dados de bloco CRC
4 bytes 4 bytes Bytes de comprimento 4 bytes

Os tipos de bloco recebem um tipo / nome ASCII com quatro letras maiúsculas e minúsculas ; compare FourCC . O caso das diferentes letras no nome (bit 5 do valor numérico do caractere) é um campo de bits que fornece ao decodificador algumas informações sobre a natureza dos blocos que ele não reconhece.

O caso da primeira letra indica se o pedaço é crítico ou não. Se a primeira letra for maiúscula, o pedaço é crítico; se não, o pedaço é acessório. Os pedaços críticos contêm informações que são necessárias para ler o arquivo. Se um decodificador encontrar um fragmento crítico que não reconhece, ele deve interromper a leitura do arquivo ou fornecer ao usuário um aviso apropriado.

O caso da segunda letra indica se o trecho é "público" (na especificação ou no registro de trechos públicos para fins especiais) ou "privado" (não padronizado). As letras maiúsculas são públicas e as minúsculas são privadas. Isso garante que os nomes dos blocos públicos e privados nunca entrem em conflito (embora dois nomes de blocos privados possam entrar em conflito).

A terceira letra deve ser maiúscula para estar de acordo com a especificação PNG. Está reservado para expansão futura. Os decodificadores devem tratar um bloco com uma terceira letra minúscula da mesma forma que qualquer outro bloco não reconhecido.

O caso da quarta letra indica se o trecho é seguro para cópia por editores que não o reconhecem. Se estiver em minúsculas, o trecho pode ser copiado com segurança, independentemente da extensão das modificações no arquivo. Se estiver em maiúsculas, ele só pode ser copiado se as modificações não tiverem tocado em nenhum bloco crítico.

Pedaços críticos

Um decodificador deve ser capaz de interpretar partes críticas para ler e renderizar um arquivo PNG.

  • IHDRdeve ser o primeiro pedaço; contém (nesta ordem) a largura da imagem (4 bytes); altura (4 bytes); profundidade de bits (1 byte, valores 1, 2, 4, 8 ou 16); tipo de cor (1 byte, valores 0, 2, 3, 4 ou 6); método de compressão (1 byte, valor 0); método de filtro (1 byte, valor 0); e método de entrelaçamento (1 byte, valores 0 "sem entrelaçamento" ou 1 " entrelaçamento Adam7 ") (total de 13 bytes de dados). Conforme declarado no World Wide Web Consortium , a profundidade de bits é definida como "o número de bits por amostra ou por índice de paleta (não por pixel)".
  • PLTEcontém a paleta : uma lista de cores.
  • IDATcontém a imagem, que pode ser dividida entre vários pedaços IDAT. Essa divisão aumenta ligeiramente o tamanho do arquivo, mas torna possível gerar um PNG de maneira streaming. O fragmento IDAT contém os dados reais da imagem, que são o fluxo de saída do algoritmo de compactação.
  • IENDmarca o fim da imagem; o campo de dados do bloco IEND tem 0 bytes / está vazio.

O PLTEpedaço é essencial para a cor tipo 3 ( cor indexada ). É opcional para os tipos de cores 2 e 6 (truecolor e truecolor com alfa) e não deve aparecer para os tipos de cores 0 e 4 (tons de cinza e tons de cinza com alfa).

Pedaços auxiliares

Outros atributos de imagem que podem ser armazenados em arquivos PNG incluem valores gama , cor de fundo e informações de metadados textuais . O PNG também oferece suporte ao gerenciamento de cores por meio da inclusão de perfis de espaço de cores ICC .

  • bKGDfornece a cor de fundo padrão. Ele deve ser usado quando não houver escolha melhor disponível, como em visualizadores de imagens autônomos (mas não em navegadores da web; consulte abaixo para obter mais detalhes).
  • cHRMfornece as coordenadas de cromaticidade das primárias e do ponto branco da tela .
  • dSIG é para armazenar assinaturas digitais.
  • eXIfarmazena metadados Exif .
  • gAMAespecifica gama . O pedaço gAMA contém apenas 4 bytes e seu valor representa o valor gama multiplicado por 100.000; por exemplo, o valor gama 1 / 3,4 é calculado para 29411,7647059 ((1 / 3,4) * (100.000)) e é convertido em um número inteiro (29412) para armazenamento.
  • hIST pode armazenar o histograma, ou quantidade total de cada cor na imagem.
  • iCCPé um perfil de cor ICC .
  • iTXtcontém uma palavra-chave e um texto UTF-8 , com codificações para possível compressão e traduções marcadas com a tag de idioma . A Extensible Metadata Platform (XMP) usa esse trecho com uma palavra-chave 'XML: com.adobe.xmp'
  • pHYsmantém o tamanho de pixel pretendido (ou proporção de aspecto de pixel); o pHYs contém "Pixels por unidade, eixo X" (4 bytes), "Pixels por unidade, eixo Y" (4 bytes) e "Especificador de unidade" (1 byte) para um total de 9 bytes.
  • sBIT(bits significativos) indica a precisão da cor dos dados de origem; este pedaço contém um total de 1 a 13 bytes.
  • sPLT sugere uma paleta para usar se a gama completa de cores não estiver disponível.
  • sRGBindica que o espaço de cores sRGB padrão é usado; o fragmento sRGB contém apenas 1 byte, que é usado para "tentativa de renderização" (4 valores - 0, 1, 2 e 3 - são definidos para a tentativa de renderização).
  • sTERpedaço indicador de imagem estereoscópica para imagens estereoscópicas .
  • tEXtpode armazenar texto que pode ser representado na ISO / IEC 8859-1 , com um par de valores-chave para cada bloco. A "chave" deve ter entre 1 e 79 caracteres. Separator é um caractere nulo. O "valor" pode ter qualquer comprimento, incluindo zero até o tamanho máximo do bloco permitido menos o comprimento da palavra-chave e do separador. Nem "chave" nem "valor" podem conter caracteres nulos. Espaços à esquerda ou à direita também não são permitidos.
  • tIME armazena a hora em que a imagem foi alterada pela última vez.
  • tRNScontém informações de transparência. Para imagens indexadas, ele armazena valores de canal alfa para uma ou mais entradas de paleta. Para imagens truecolor e em tons de cinza, ele armazena um único valor de pixel que deve ser considerado totalmente transparente.
  • zTXtcontém texto compactado (e um marcador de método de compactação) com os mesmos limites de tEXt.

A primeira letra minúscula nesses blocos indica que eles não são necessários para a especificação PNG. A última letra minúscula em alguns blocos indica que eles podem ser copiados com segurança, mesmo que o aplicativo em questão não os compreenda.

Formato de pixel

Tipo de cor PNG
Tipo de cor Canais Bits por canal
1 2 4 8 16
Indexado 1 1 2 4 8
Tons de Cinza 1 1 2 4 8 16
Tons de cinza e alfa 2 16 32
Truecolor 3 24 48
Truecolor e alfa 4 32 64

Pixels em imagens PNG são números que podem ser índices de dados de amostra na paleta ou os próprios dados de amostra. A paleta é uma tabela separada contida no bloco PLTE. Os dados de amostra para um único pixel consistem em uma tupla de um a quatro números. Quer os dados de pixel representem índices de paleta ou valores de amostra explícitos, os números são referidos como canais e cada número na imagem é codificado com um formato idêntico.

Os formatos permitidos codificam cada número como um valor inteiro sem sinal usando um número fixo de bits, referido na especificação PNG como a profundidade de bits . Observe que isso não é o mesmo que profundidade de cor , que é comumente usada para se referir ao número total de bits em cada pixel, não em cada canal. As profundidades de bits permitidas estão resumidas na tabela junto com o número total de bits usados ​​para cada pixel.

O número de canais depende se a imagem é em tons de cinza ou colorida e se ela tem um canal alfa . PNG permite as seguintes combinações de canais, chamadas de tipo de cor .

0 (000 2 ) escala de cinza
2 (010 2 ) vermelho, verde e azul: rgb / truecolor
3 (011 2 ) indexado: canal contendo índices em uma paleta de cores
4 (100 2 ) escala de cinza e alfa: nível de opacidade para cada pixel
6 (110 2 ) vermelho, verde, azul e alfa

O tipo de cor é especificado como um valor de 8 bits, no entanto, apenas os 3 bits baixos são usados ​​e, mesmo assim, apenas as cinco combinações listadas acima são permitidas. Desde que o tipo de cor seja válido, ele pode ser considerado como um campo de bits, conforme resumido na tabela ao lado:

Tipos de cores PNG

Tipo de cor
Nome Binário Máscaras
  UMA C P
0 Tons de Cinza 0 0 0 0  
2 Truecolor 0 0 1 0 cor
3 Indexado 0 0 1 1 paleta de cores
4 Tons de cinza e alfa 0 1 0 0 alfa
6 Truecolor e alfa 0 1 1 0 alfa, cor
  • valor de bit 1: os dados da imagem armazenam os índices da paleta. Isso só é válido em combinação com o valor de bit 2;
  • valor de bit 2: as amostras de imagem contêm três canais de dados que codificam cores tricromáticas , caso contrário, as amostras de imagem contêm um canal de dados de codificação de luminância relativa ,
  • valor de bit 4: as amostras de imagem também contêm um canal alfa expresso como uma medida linear da opacidade do pixel. Isso não é válido em combinação com o valor de bit 1.

Com imagens de cores indexadas, a paleta sempre armazena cores tricromáticas a uma profundidade de 8 bits por canal (24 bits por entrada da paleta). Além disso, uma lista opcional de valores alfa de 8 bits para as entradas da paleta pode ser incluída; se não for incluída ou se for menor que a paleta, as entradas restantes da paleta serão consideradas opacas. A paleta não deve ter mais entradas do que a profundidade de bits da imagem permite, mas pode ter menos (por exemplo, se uma imagem com pixels de 8 bits usa apenas 90 cores, então ela não precisa de entradas de paleta para todas as 256 cores). A paleta deve conter entradas para todos os valores de pixel presentes na imagem.

O padrão permite que PNGs de cores indexadas tenham 1, 2, 4 ou 8 bits por pixel; imagens em tons de cinza sem canal alfa podem ter 1, 2, 4, 8 ou 16 bits por pixel. Todo o resto usa uma profundidade de bits por canal de 8 ou 16. As combinações que isso permite são fornecidas na tabela acima. O padrão requer que os decodificadores possam ler todos os formatos de cores suportados, mas muitos editores de imagem podem produzir apenas um pequeno subconjunto deles.

Transparência da imagem

PNG oferece uma variedade de opções de transparência. Com imagens em cores reais e em tons de cinza, um único valor de pixel pode ser declarado como transparente ou um canal alfa pode ser adicionado (permitindo que qualquer porcentagem de transparência parcial seja usada). Para imagens da paleta, os valores alfa podem ser adicionados às entradas da paleta. O número de tais valores armazenados pode ser menor que o número total de entradas da paleta, caso em que as entradas restantes são consideradas totalmente opacas.

A varredura de valores de pixel para transparência binária deve ser realizada antes de qualquer redução de cor para evitar que os pixels se tornem involuntariamente transparentes. É mais provável que isso represente um problema para sistemas que podem decodificar imagens de 16 bits por canal (como é necessário para conformidade com a especificação), mas apenas a saída de 8 bits por canal (a norma para todos, exceto os sistemas mais avançados) .

O armazenamento alfa pode ser "associado" (" pré-multiplicado ") ou "não associado", mas PNG padronizado em alfa "não associado" ("não pré-multiplicado"), o que significa que as imagens não são codificadas por alfa ; as emissões representadas em RGB não são as emissões no nível do pixel. Isso significa que a operação over multiplicará as emissões RGB pelo alfa e não pode representar a emissão e a oclusão adequadamente.

Compressão

Exemplo com vários tipos de conteúdo de imagem
Representação do custo de bits por pixel para o arquivo PNG acima (vermelho = caro, azul = barato)

PNG usa um processo de compressão de 2 estágios:

  • pré-compressão: filtragem (previsão)
  • compressão: DEFLATE

PNG usa DEFLATE , um algoritmo de compressão de dados sem perdas não patenteado envolvendo uma combinação de codificação LZ77 e Huffman . Implementações DEFLATE com licença permissiva , como zlib , estão amplamente disponíveis.

Em comparação com formatos com compactação com perdas , como JPG , escolher uma configuração de compactação superior à média atrasa o processamento, mas geralmente não resulta em um tamanho de arquivo significativamente menor.

Filtrando

O método de filtro 0 do PNG pode usar os dados nos pixels A, B e C para prever o valor de X.
Um PNG com 256 cores, que tem apenas 251 bytes de tamanho com pré-filtro. A mesma imagem de um GIF seria mais de treze vezes maior.

Antes de DEFLATE ser aplicado, os dados são transformados por meio de um método de predição: um único método de filtro é usado para a imagem inteira, enquanto para cada linha da imagem, um tipo de filtro é escolhido para transformar os dados para torná-los mais compactáveis. O tipo de filtro usado para uma linha de varredura é prefixado à linha de varredura para permitir a descompressão em linha.

Há apenas um método de filtro na especificação PNG atual (denotado como método 0) e, portanto, na prática, a única escolha é qual tipo de filtro aplicar a cada linha. Para este método, o filtro prevê o valor de cada pixel com base nos valores dos pixels vizinhos anteriores e subtrai a cor prevista do pixel do valor real, como no DPCM . Uma linha de imagem filtrada desta forma é frequentemente mais compressível do que a linha de imagem bruta seria, especialmente se for semelhante à linha acima, uma vez que as diferenças da previsão geralmente serão agrupadas em torno de 0, em vez de espalhadas por todos os valores de imagem possíveis. Isso é particularmente importante ao relacionar linhas separadas, uma vez que DEFLATE não entende que uma imagem é uma entidade 2D e, em vez disso, apenas vê os dados da imagem como um fluxo de bytes.

Existem cinco tipos de filtro para o método de filtro 0; cada tipo prevê o valor de cada byte (dos dados da imagem antes da filtragem) com base no byte correspondente do pixel à esquerda ( A ), o pixel acima ( B ) e o pixel acima e à esquerda ( C ) ou alguma combinação dos mesmos e codifica a diferença entre o valor previsto e o valor real. Os filtros são aplicados a valores de bytes, não pixels; os valores de pixel podem ser um ou dois bytes, ou vários valores por byte, mas nunca ultrapassar os limites do byte. Os tipos de filtro são:

Byte de tipo Nome do filtro Valor previsto
0 Nenhum Zero (para que o valor bruto do byte passe inalterado)
1 Sub Byte A (à esquerda)
2 Acima Byte B (acima)
3 Média Média dos bytes A e B , arredondado para baixo
4 Paeth A , B ou C , o que estiver mais próximo de p = A + B - C

O filtro Paeth é baseado em um algoritmo de Alan W. Paeth . Compare com a versão do DPCM usado em JPEG sem perdas e com a transformada wavelet discreta usando 1 × 2, 2 × 1 ou (para o preditor Paeth) janelas 2 × 2 e wavelets Haar .

A compressão é ainda melhorada pela escolha dos tipos de filtro de forma adaptativa linha a linha. Esse aprimoramento, e um método heurístico de implementação comumente usado por software de gravação de PNG, foram criados por Lee Daniel Crocker , que testou os métodos em muitas imagens durante a criação do formato; a escolha do filtro é um componente da otimização do tamanho do arquivo, conforme discutido abaixo.

Se o entrelaçamento for usado, cada estágio do entrelaçamento é filtrado separadamente, o que significa que a imagem pode ser renderizada progressivamente conforme cada estágio é recebido; entretanto, o entrelaçamento geralmente torna a compactação menos eficaz.

Entrelaçamento

Uma ilustração de Adam7 entrelaçado sobre uma imagem 16 × 16.

PNG oferece um esquema opcional de entrelaçamento bidimensional de 7 passagens - o algoritmo Adam7 . Isso é mais sofisticado do que o esquema de 4 passagens unidimensional do GIF e permite que uma imagem de baixa resolução mais nítida seja visível no início da transferência, especialmente se algoritmos de interpolação, como a interpolação bicúbica, forem usados.

No entanto, o esquema de 7 passagens tende a reduzir a compressibilidade dos dados mais do que os esquemas mais simples.

Animação

Um arquivo APNG (PNG animado) (exibido como imagem estática em alguns navegadores da web )

O PNG em si não suporta animação. MNG é uma extensão do PNG que sim; foi desenhado por membros do Grupo PNG. O MNG compartilha a estrutura básica e os pedaços do PNG, mas é significativamente mais complexo e tem uma assinatura de arquivo diferente, o que o torna automaticamente incompatível com os decodificadores PNG padrão, o que fez com que o MNG quase não tivesse suporte ou o suporte fosse descartado pela maioria dos navegadores ou aplicativos.

A complexidade do MNG levou à proposta do APNG pelos desenvolvedores da Fundação Mozilla. É baseado em PNG, suporta animação e é mais simples do que MNG. APNG oferece fallback para exibição de imagem única para decodificadores PNG que não suportam APNG. Hoje, o formato APNG é amplamente suportado por todos os principais navegadores da web. APNG é suportado no Firefox 3.0 e superior, Pale Moon (todas as versões) e a versão mais recente do Opera suporta APNG desde que o motor foi alterado para Blink. A última versão do Safari no iOS 8 e Safari 8 para OS X Yosemite , eles usam o motor WebKit que suporta APNG. O Chromium 59.0 adicionou suporte a APNG e foi seguido pelo Google Chrome. O Microsoft Edge agora oferece suporte a APNG com o novo mecanismo baseado em Chromium.

O Grupo PNG decidiu em abril de 2007 não abraçar o APNG. Várias alternativas estavam em discussão, ANG, aNIM / mPNG, "PNG em GIF" e seu subconjunto "RGBA em GIF". No entanto, apenas APNG atualmente tem suporte para todos os principais navegadores da web.

Exemplos

Estrutura de um arquivo PNG muito simples
89 50 4E 47 0D 0A 1A 0A
Assinatura PNG
IHDR
Cabeçalho da imagem
IDAT
Dados de imagem
IEND
Fim da imagem
Conteúdo de um arquivo PNG mínimo representando um pixel vermelho
Hex Como personagens

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00 00 00 01 00 00 00 01 08 02 00 00 00 90 77 53
DE 00 00 00 0C 49 44 41 54 08 D7 63 F8 CF C0 00
00 03 01 01 00 18 DD 8D B0 00 00 00 00 49 45 4E
44 AE 42 60 82

.PNG .... .... IHDR
.............. wS
. .... IDAT..c ....
......... .... IEN
D.B`.

IHDR Chunk
Offset em chunk Valor hexadecimal Valor Decimal Texto Significado
0 0x0D 13 O pedaço IHDR tem 13 bytes de conteúdo
4 0x49484452 IHDR Identifica um bloco de cabeçalho
8 0x01 1 A imagem tem 1 pixel de largura
12 0x01 1 A imagem tem 1 pixel de altura
16 0x08 8 8 bits por pixel (por canal)
17 0x02 2 Cor tipo 2 (RGB / truecolor)
18 0x00 0 Método de compressão 0 (apenas valor aceito)
19 0x00 0 Método de filtro 0 (apenas valor aceito)
20 0x00 0 Não entrelaçado
21 0x907753DE CRC do tipo e conteúdo do bloco (mas não do comprimento)
Pedaço IDAT
Offset em chunk Valor hexadecimal Significado
0 0x0C O pedaço IDAT tem 12 bytes de conteúdo
4 0x49444154 Identifica um bloco de dados
8 0x08 Método de compressão DEFLATE usando uma janela de 256 bytes
9 0xD7 Valor ZLIB FCHECK, nenhum dicionário usado, algoritmo de compressão máxima
10 0x63F8CFC00000 Um bloco DEFLATE compactado usando o código Huffman estático que decodifica para 0x00 0xFF 0x00 0x00
16 0x03010100 O valor de verificação ZLIB: a soma de verificação Adler32 dos dados descompactados
20 0x18DD8DB0 CRC do tipo e conteúdo do bloco (mas não do comprimento)

Exibido na forma de editores hexadecimais , com valores de byte do lado esquerdo mostrados em formato hexadecimal e, do lado direito, seus caracteres equivalentes de ISO-8859-1 com caracteres não reconhecidos e de controle substituídos por pontos. Além disso, a assinatura PNG e os pedaços individuais são marcados com cores. Observe que eles são fáceis de identificar por causa de seus nomes de tipo legíveis por humanos (neste exemplo PNG, IHDR, IDAT e IEND).

Vantagens

As razões para usar este Padrão Internacional podem ser:

  • Portabilidade : a transmissão é independente da plataforma de software e hardware.
  • Completude : é possível representar imagens truecolor, cores indexadas e tons de cinza.
  • Codificação e decodificação em série : permite gerar e ler streams de dados em série, ou seja, o formato do stream de dados é utilizado para a geração e visualização das imagens no momento por meio de comunicação serial.
  • Apresentação progressiva : para poder transmitir fluxos de dados que são inicialmente uma aproximação de toda a imagem e progressivamente melhoram à medida que o fluxo de dados é recebido.
  • Solidez para erros de transmissão : detecta os erros de transmissão do fluxo de dados corretamente.
  • Sem perdas : Sem perdas: a filtragem e a compressão preservam todas as informações.
  • Eficiência : qualquer apresentação, compressão e filtragem progressiva de imagens busca decodificação e apresentação eficientes.
  • Compactação : as imagens podem ser compactadas de forma eficiente e consistente.
  • Facilidade : a implementação do padrão é fácil.
  • Intercambiabilidade : qualquer decodificador PNG que siga os padrões pode ler todos os fluxos de dados PNG.
  • Flexibilidade : permite futuras extensões e acréscimos privados sem afetar o ponto anterior.
  • Liberdade de restrições legais : os algoritmos utilizados são gratuitos e acessíveis.

Comparação com outros formatos de arquivo

Formato de intercâmbio de gráficos (GIF)

  • Em imagens pequenas, o GIF pode atingir uma compactação maior do que o PNG (consulte a seção sobre o tamanho do arquivo abaixo).
  • Na maioria das imagens, exceto no caso acima, um arquivo GIF tem um tamanho maior do que uma imagem PNG indexada.
  • PNG oferece uma gama muito mais ampla de opções de transparência do que GIF, incluindo transparência de canal alfa .
  • Enquanto o GIF é limitado a cores indexadas de 8 bits , PNG oferece uma gama muito mais ampla de profundidades de cores, incluindo 24 bits (8 bits por canal) e 48 bits (16 bits por canal) truecolor , permitindo maior precisão de cores, mais suave desvanece-se, etc. Quando um canal alfa é adicionado, são possíveis até 64 bits por pixel (antes da compressão).
  • Ao converter uma imagem do formato PNG para GIF, a qualidade da imagem pode ser prejudicada devido à posterização se a imagem PNG tiver mais de 256 cores.
  • GIF suporta intrinsecamente imagens animadas. PNG oferece suporte a animação apenas por meio de extensões não oficiais (consulte a seção sobre animação , acima).

Imagens PNG são menos suportadas por navegadores mais antigos. Em particular, o IE6 tem suporte limitado para PNG.

JPEG

Imagem composta comparando a compactação com perdas em JPEG com a compactação sem perdas em PNG: os artefatos JPEG podem ser facilmente visíveis no plano de fundo desse tipo de dados de imagem, onde a imagem PNG tem cor sólida.

O formato JPEG (Joint Photographic Experts Group) pode produzir um arquivo menor do que PNG para imagens fotográficas (e semelhantes a fotos), uma vez que JPEG usa um método de codificação com perdas projetado especificamente para dados de imagens fotográficas, que normalmente são dominados por imagens suaves e de baixo contraste transições e uma quantidade de ruído ou estruturas irregulares semelhantes. Usar PNG em vez de JPEG de alta qualidade para essas imagens resultaria em um grande aumento no tamanho do arquivo com ganho insignificante de qualidade. Em comparação, ao armazenar imagens que contêm texto, arte de linha ou gráficos - imagens com transições nítidas e grandes áreas de cores sólidas - o formato PNG pode compactar dados de imagem mais do que JPEG. Além disso, o PNG não tem perdas, enquanto o JPEG produz artefatos visuais em torno de áreas de alto contraste. (Esses artefatos dependem das configurações usadas na compressão JPG; eles podem ser bastante perceptíveis quando uma configuração de baixa qualidade [alta compressão] é usada.) Onde uma imagem contém transições nítidas e partes fotográficas, uma escolha deve ser feita entre os dois efeitos. JPEG não oferece suporte a transparência.

A compressão com perdas de JPEG também sofre com a perda de geração , onde a decodificação e recodificação repetidamente de uma imagem para salvá-la novamente causa uma perda de informações a cada vez, degradando a imagem. Como o PNG não tem perdas, ele é adequado para armazenar imagens a serem editadas. Embora o PNG seja razoavelmente eficiente ao compactar imagens fotográficas, existem formatos de compactação sem perdas projetados especificamente para imagens fotográficas, WebP sem perdas e Adobe DNG (negativo digital), por exemplo. No entanto, esses formatos não são amplamente suportados ou são proprietários. Uma imagem pode ser armazenada sem perdas e convertida para o formato JPEG apenas para distribuição, de forma que não haja perda de geração.

Embora a especificação PNG não inclua explicitamente um padrão para incorporar dados de imagem Exif de fontes como câmeras digitais, o método preferido para incorporar dados EXIF ​​em um PNG é usar o rótulo de bloco auxiliar não crítico eXIf.

Os primeiros navegadores da web não suportavam imagens PNG; JPEG e GIF foram os principais formatos de imagem. JPEG era comumente usado ao exportar imagens contendo gradientes para páginas da web, devido à profundidade de cor limitada do GIF. No entanto, a compactação JPEG faz com que um gradiente fique levemente desfocado. Um formato PNG reproduz um gradiente com a maior precisão possível para uma determinada profundidade de bits, enquanto mantém o tamanho do arquivo pequeno. PNG tornou-se a escolha ideal para imagens de gradiente pequeno, pois o suporte do navegador da web para o formato foi aprimorado. Nenhuma imagem é necessária para exibir gradientes em navegadores modernos, pois os gradientes podem ser criados usando CSS .

JPEG-LS

JPEG-LS é um formato de imagem do Joint Photographic Experts Group , embora muito menos conhecido e suportado do que o outro formato JPEG com perdas discutido acima. É diretamente comparável ao PNG e possui um conjunto padrão de imagens de teste. No Waterloo Repertoire ColorSet, um conjunto padrão de imagens de teste (não relacionadas ao conjunto de teste de conformidade JPEG-LS), JPEG-LS geralmente tem um desempenho melhor do que PNG, em 10-15%, mas em algumas imagens PNG tem um desempenho substancialmente melhor, no ordem de 50–75%. Portanto, se ambos os formatos são opções e o tamanho do arquivo é um critério importante, ambos devem ser considerados, dependendo da imagem.

TIFF

Tagged Image File Format (TIFF) é um formato que incorpora uma gama extremamente ampla de opções. Embora isso torne o TIFF útil como um formato genérico para intercâmbio entre aplicativos de edição de imagem profissional, torna a adição de suporte a aplicativos uma tarefa muito maior e, portanto, tem pouco suporte em aplicativos não preocupados com a manipulação de imagens (como navegadores da web). O alto nível de extensibilidade também significa que a maioria dos aplicativos fornece apenas um subconjunto de recursos possíveis, potencialmente criando confusão para o usuário e problemas de compatibilidade.

O algoritmo de compressão sem perdas mais comum de uso geral usado com TIFF é Lempel – Ziv – Welch (LZW). Esta técnica de compressão, também usada em GIF, foi coberta por patentes até 2003. TIFF também suporta o algoritmo de compressão que PNG usa (ou seja, Compression Tag 0008 16 ' estilo Adobe ') com uso médio e suporte por aplicativos. O TIFF também oferece algoritmos de compactação sem perdas para fins especiais, como o CCITT Grupo IV , que pode compactar imagens de dois níveis (por exemplo, fax ou texto em preto e branco) melhor do que o algoritmo de compactação do PNG.

PNG oferece suporte apenas para alfa não pré-multiplicado, enquanto o TIFF também oferece suporte para alfa "associado" (pré-multiplicado).

Suporte de software

A implementação de referência oficial do formato PNG é a biblioteca de programação libpng . É publicado como software livre nos termos de uma licença permissiva de software livre . Portanto, geralmente é encontrado como uma importante biblioteca de sistema em sistemas operacionais livres.

Suporte ao editor gráfico de bitmap para PNG

O formato PNG é amplamente suportado por programas gráficos, incluindo Adobe Photoshop , Corel 's Photo-Paint e Paint Shop Pro , GIMP , GraphicConverter , Helicon Filter , ImageMagick , Inkscape , IrfanView , editor de imagens Pixel, Paint.NET e Xara Photo & Designer gráfico e muitos outros. Alguns programas empacotados com populares sistemas operacionais que suportam PNG incluem Microsoft 's pintura e da Apple ' s Fotos / iPhoto e visualização , com o GIMP também muitas vezes a ser empacotado com populares de Linux distribuições.

Adobe Fireworks (anteriormente por Macromedia ) usa PNG como seu formato de arquivo nativo, permitindo que outros editores de imagem e utilitários de visualização vejam a imagem achatada. No entanto, por padrão, o Fireworks também armazena metadados para camadas, animação, dados vetoriais, texto e efeitos. Esses arquivos não devem ser distribuídos diretamente. Em vez disso, o Fireworks pode exportar a imagem como um PNG otimizado sem os metadados extras para uso em páginas da web, etc.

Suporte de navegador da web para PNG

O suporte a PNG apareceu pela primeira vez em 1997, no Internet Explorer 4.0b1 (32 bits apenas para NT) e no Netscape 4.04.

Apesar das chamadas da Free Software Foundation e do World Wide Web Consortium (W3C), ferramentas como gif2png e campanhas como Burn All GIFs, a adoção de PNG em sites foi bastante lenta devido ao suporte atrasado e cheio de bugs no Internet Explorer, especialmente em relação à transparência .

Os navegadores compatíveis com PNG incluem: Apple Safari , Google Chrome , Mozilla Firefox , Opera , Camino , Internet Explorer 7 (ainda vários problemas), Internet Explorer 8 (ainda alguns problemas), Internet Explorer 9 e muitos outros. Para uma comparação completa, consulte Comparação de navegadores da web (suporte ao formato de imagem) .

Especialmente as versões do Internet Explorer (Windows) abaixo de 9.0 (lançado em 2011) apresentam vários problemas que o impedem de renderizar corretamente as imagens PNG.

  • 4.0 trava em grandes blocos PNG.
  • 4.0 não inclui a funcionalidade para visualizar arquivos .png, mas há uma correção de registro.
  • 5.0 e 5.01 quebraram o suporte a OBJECT.
  • 5.01 imprime imagens de paleta com fundos pretos (ou cinza escuro) no Windows 98, às vezes com cores radicalmente alteradas.
  • 6.0 não exibe imagens PNG de 4097 ou 4098 bytes de tamanho.
  • 6.0 não pode abrir um arquivo PNG que contém um ou mais fragmentos IDAT de comprimento zero. Esse problema foi corrigido pela primeira vez na atualização de segurança 947864 (MS08-024). Para obter mais informações, consulte este artigo na Base de Dados de Conhecimento da Microsoft: 947864 MS08-024: Atualização de segurança cumulativa para Internet Explorer.
  • 6.0 às vezes perde completamente a capacidade de exibir PNGs, mas existem várias correções.
  • 6.0 e anteriores têm suporte para transparência do canal alfa quebrado (exibirá a cor de fundo padrão em seu lugar).
  • 7.0 e anteriores não podem combinar transparência alfa de 8 bits E opacidade do elemento ( CSS - filtro: Alpha (opacidade = xx)) sem preencher as seções parcialmente transparentes com preto.
  • 8.0 e abaixo têm suporte gama inconsistente / quebrado.
  • 8.0 e inferiores não têm suporte para correção de cores.

Suporte do sistema operacional para ícones PNG

Os ícones PNG têm suporte na maioria das distribuições do Linux desde pelo menos 1999, em ambientes de desktop como o GNOME . Em 2006, o suporte do Microsoft Windows para ícones PNG foi introduzido no Windows Vista . Os ícones PNG também são compatíveis com AmigaOS 4 , AROS , macOS , iOS e MorphOS . Além disso, o Android faz uso extensivo de PNGs.

Tamanho de arquivo e software de otimização

O tamanho do arquivo PNG pode variar significativamente dependendo de como ele é codificado e compactado; isso é discutido e várias dicas são fornecidas em PNG: The Definitive Guide.

Comparado com GIF

Comparado aos arquivos GIF , um arquivo PNG com as mesmas informações (256 cores, sem pedaços / metadados auxiliares), compactado por um compressor efetivo é normalmente menor do que uma imagem GIF. Dependendo do arquivo e do compressor, o PNG pode variar de um pouco menor (10%) a significativamente menor (50%) a um pouco maior (5%), mas raramente é significativamente maior para imagens grandes. Isso é atribuído ao desempenho do DEFLATE do PNG em comparação ao LZW do GIF e porque a camada de pré-compactação adicionada dos filtros preditivos do PNG leva em consideração a estrutura da imagem bidimensional para compactar ainda mais os arquivos; como os dados filtrados codificam as diferenças entre os pixels, eles tenderão a se agrupar mais perto de 0, em vez de se espalharem por todos os valores possíveis e, portanto, serem mais facilmente compactados pelo DEFLATE. No entanto, algumas versões do Adobe Photoshop , CorelDRAW e MS Paint fornecem compactação PNG pobre, criando a impressão de que GIF é mais eficiente.

Fatores de tamanho de arquivo

Os arquivos PNG variam em tamanho devido a uma série de fatores:

profundidade de cor
A profundidade da cor pode variar de 1 a 64 bits por pixel.
pedaços auxiliares
PNG oferece suporte a metadados - isso pode ser útil para edição, mas desnecessário para visualização, como em sites.
entrelaçamento
Como cada passagem do algoritmo Adam7 é filtrada separadamente, isso pode aumentar o tamanho do arquivo.
filtro
Como um estágio de pré-compressão, cada linha é filtrada por um filtro preditivo, que pode mudar de linha para linha. Como a etapa final DEFLATE opera em todos os dados filtrados da imagem, não se pode otimizar essa linha por linha; a escolha do filtro para cada linha é, portanto, potencialmente muito variável, embora existam heurísticas.
compressão
Com computação adicional, os compressores DEFLATE podem produzir arquivos menores.

Há, portanto, uma compensação de tamanho de arquivo entre alta profundidade de cor, metadados máximos (incluindo informações de espaço de cores, juntamente com informações que não afetam a exibição), entrelaçamento e velocidade de compactação, que produzem arquivos grandes, com menor profundidade de cor, menos ou sem pedaços auxiliares, sem entrelaçamento e filtragem e compressão ajustadas, mas computacionalmente intensas. Para diferentes propósitos, diferentes compensações são escolhidas: um arquivo máximo pode ser melhor para arquivamento e edição, enquanto um arquivo reduzido pode ser melhor para uso em um site e, da mesma forma, compressão rápida, mas pobre, é preferível ao editar e salvar repetidamente um , enquanto a compressão lenta, mas alta, é preferida quando um arquivo é estável: ao arquivar ou postar. O entrelaçamento é uma compensação: acelera drasticamente a renderização inicial de arquivos grandes (melhora a latência), mas pode aumentar o tamanho do arquivo (diminuir a taxa de transferência) para obter pouco ganho, especialmente para arquivos pequenos.

Compressão PNG com perdas

Embora PNG seja um formato sem perdas, os codificadores PNG podem pré-processar dados de imagem com perdas para melhorar a compactação PNG. Por exemplo, quantizar um PNG truecolor para 256 cores permite que o tipo de cor indexada seja usado para uma provável redução no tamanho do arquivo.

Software de edição de imagem

Alguns programas são mais eficientes do que outros ao salvar arquivos PNG. Isso está relacionado à implementação da compactação PNG usada pelo programa.

Muitos programas gráficos (como o software Preview da Apple ) salvam PNGs com grandes quantidades de metadados e dados de correção de cores que geralmente são desnecessários para visualização na web . Arquivos PNG não otimizados do Adobe Fireworks também são notórios por isso, pois contêm opções para tornar a imagem editável em editores compatíveis. Além disso, o CorelDRAW (pelo menos a versão 11) às vezes produz PNGs que não podem ser abertos pelo Internet Explorer (versões 6–8).

O desempenho do Adobe Photoshop em arquivos PNG melhorou no CS Suite ao usar o recurso Salvar para a Web (que também permite o uso explícito de PNG / 8).

O Fireworks da Adobe salva arquivos PNG maiores do que muitos programas por padrão. Isso decorre da mecânica de seu formato Salvar : as imagens produzidas pela função salvar do Fireworks incluem grandes pedaços privados, contendo camadas completas e informações vetoriais. Isso permite mais edições sem perdas. Quando salvos com a opção Exportar , os PNGs do Fireworks são competitivos com aqueles produzidos por outros editores de imagem, mas não são mais editáveis ​​como nada além de bitmaps nivelados. O Fireworks não consegue salvar PNGs editáveis ​​por vetor com tamanho otimizado.

Outros exemplos notáveis ​​de compressores PNG ruins incluem:

  • Paint da Microsoft para Windows XP
  • Microsoft Picture It! Photo Premium 9

A compactação fraca aumenta o tamanho do arquivo PNG, mas não afeta a qualidade da imagem ou a compatibilidade do arquivo com outros programas.

Quando a profundidade de cor de uma imagem truecolor é reduzida a uma paleta de 8 bits (como no GIF), os dados da imagem resultante são normalmente muito menores. Assim, um PNG truecolor é normalmente maior do que um GIF com cor reduzida, embora o PNG possa armazenar a versão com cor reduzida como um arquivo paletizado de tamanho comparável. Por outro lado, algumas ferramentas, ao salvar imagens como PNGs, salvam-nas automaticamente como truecolor, mesmo que os dados originais usem apenas cores de 8 bits, aumentando assim o arquivo desnecessariamente. Ambos os fatores podem levar ao equívoco de que os arquivos PNG são maiores do que os arquivos GIF equivalentes.

Ferramentas de otimização

Várias ferramentas estão disponíveis para otimizar arquivos PNG; eles fazem isso por:

  • (opcionalmente) removendo pedaços auxiliares,
  • reduzindo a profundidade da cor:
    • use uma paleta (em vez de RGB) se a imagem tiver 256 cores ou menos,
    • use uma paleta menor, se a imagem tiver 2, 4 ou 16 cores, ou
    • (opcionalmente) descarte com perda alguns dos dados da imagem original,
  • otimizar a escolha do filtro linha por linha e
  • otimizando a compressão DEFLATE.

Lista de ferramentas

  • pngcrush é o mais antigo dos otimizadores PNG populares. Ele permite várias tentativas de seleção de filtro e argumentos de compressão e, por fim, escolhe o menor. Este modelo de trabalho é usado em quase todos os otimizadores PNG.
  • OptiPNG foi inspirado pelo pngcrush, mas itera em uma ampla gama de parâmetros de compressão e realiza testes na memória para uma execução mais rápida. O objetivo principal do OptiPNG é reduzir o tamanho do fluxo de dados PNG IDAT , tentando vários métodos de filtragem e compactação. Ele também executa a profundidade de bits automática, o tipo de cor e a redução da paleta de cores sempre que possível, e pode corrigir alguns erros de integridade de dados em arquivos de entrada. (pngcrush tem a capacidade de reduzir a cor em uma versão posterior.)
  • advpng e o utilitário advdef semelhante no pacote AdvanceCOMP recompactam o PNG IDAT. Diferentes implementações DEFLATE são aplicadas dependendo do nível de compressão selecionado, trocando entre velocidade e tamanho do arquivo: zlib no nível 1, libdeflate no nível 2, 7-zip 's LZMA DEFLATE no nível 3 e zopfli no nível 4.
  • O pngout foi feito com o deflator do próprio autor (igual ao utilitário zip do autor, kzip), mantendo todas as facilidades de redução / filtragem de cor. No entanto, o pngout não permite o uso de vários testes em filtros em uma única execução. É sugerido usar sua versão comercial da GUI, pngoutwin, ou usado com um invólucro para automatizar os testes ou para recomprimir usando seu próprio deflator enquanto mantém o filtro linha por linha.
  • zopflipng também foi feito com um deflator próprio, zopfli. Ele possui todos os recursos de otimização que o optipng e o pngcrush possuem (incluindo testes automatizados), enquanto fornece um deflator muito bom, mas lento.

Uma comparação simples de seus recursos está listada abaixo.

Otimizador Remoção de pedaços Redução de cor Filtrando Reutilização de filtro Vários testes em filtros em uma única execução Deflator
advpng sim Não 0 Não N / D (múltiplo)
advdef Não Não Reutiliza o conjunto de filtros anterior Sempre N / D (múltiplo)
OptiPNG sim sim 0–4 ou adaptativo Não sim zlib
pngcrush sim sim 0–4 ou adaptativo Não sim zlib
pngout sim sim 0–4 ou adaptativo sim Não kzip
zopflipng sim sim 0–4 ou adaptável com 2 algoritmos diferentes ou de forma bruta sim sim zopfli

Antes do zopflipng estar disponível, uma boa maneira na prática de realizar uma otimização png é usar uma combinação de 2 ferramentas em sequência para compactação ideal: uma que otimiza os filtros (e remove pedaços auxiliares) e outra que otimiza o DEFLATE. Embora o pngout ofereça ambos, apenas um tipo de filtro pode ser especificado em uma única execução, portanto, pode ser usado com uma ferramenta de empacotamento ou em combinação com optipng ou pngcrush , agindo como um redefinidor, como advdef.

Remoção de pedaços auxiliares

Para remover fragmentos auxiliares, a maioria das ferramentas de otimização PNG tem a capacidade de remover todos os dados de correção de cores de arquivos PNG (gama, equilíbrio de branco, perfil de cor ICC, perfil de cor RGB padrão). Isso geralmente resulta em tamanhos de arquivo muito menores. Por exemplo, as seguintes opções de linha de comando conseguem isso com pngcrush:

pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png

Pedaços auxiliares também podem ser removidos sem perdas usando o programa Win32 gratuito PNGExtra .

Otimização de filtro

OptiPNG, pngcrush, pngout e zopflipng oferecem opções aplicando um dos tipos de filtro 0-4 globalmente (usando o mesmo tipo de filtro para todas as linhas) ou com um "pseudo filtro" (numerado 5), que para cada linha escolhe um de os tipos de filtro 0–4 usando um algoritmo adaptativo. Zopflipng oferece 3 métodos adaptativos diferentes, incluindo uma busca de força bruta que tenta otimizar a filtragem.

pngout e zopflipng fornecem uma opção para preservar / reutilizar o conjunto de filtros linha por linha presente na imagem de entrada.

OptiPNG, pngcrush e zopflipng fornecem opções para tentar diferentes estratégias de filtro em uma única execução e escolher a melhor. A versão de linha de comando freeware do pngout não oferece isso, mas a versão comercial, pngoutwin, oferece.

Otimização DEFLATE

O zopfli e o LZMA SDK empregam implementações DEFLATE que produzem taxas de compressão mais altas do que a implementação de referência zlib ao custo do desempenho. AdvanceCOMP 's advpnge advdefpode usar qualquer uma dessas bibliotecas para recompactar arquivos PNG. Além disso, PNGOUT contém sua própria implementação DEFLATE proprietária .

advpngnão tem a opção de aplicar filtros e sempre usa o filtro 0 globalmente (deixando os dados da imagem sem filtro); portanto, não deve ser usado onde a imagem se beneficia significativamente da filtragem. Por outro lado, advdefo mesmo pacote não lida com a estrutura PNG e atua apenas como um redefinidor, mantendo todas as configurações de filtro existentes.

Otimização de ícones

Como os ícones destinados ao Windows Vista e versões posteriores podem conter subimagens PNG, as otimizações também podem ser aplicadas a eles. Pelo menos um editor de ícone , Pixelformer , é capaz de realizar uma passagem de otimização especial enquanto salva arquivos ICO , reduzindo assim seus tamanhos. FileOptimizer (mencionado acima) também pode lidar com arquivos ICO.

Os ícones do macOS também podem conter subimagens PNG, mas essa ferramenta não está disponível.

Veja também

  • Formatos de arquivo semelhantes
  • Gráficos Vetoriais Escaláveis
  • WebP
  • IrfanView
  • Notas

    Referências

    Leitura adicional

    links externos