30Aug

O formato PNG é sem perdas, pois possui um parâmetro de compressão?

how-is-the-png-format-lossless-since-it-has-a-compression-parameter-00

O formato PNG é suposto ser um formato sem perdas, mas quando você salva uma imagem como um arquivo PNG, você é solicitado a escolher um nível de compressão. Isso significa que o formato PNG na verdade não é sem perdas depois de tudo? O super-usuário do usuário Q & A publicação ajuda a esclarecer a confusão para um leitor curioso.

Pergunta de hoje e amp;A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.

O questionário

SuperUser reader pokout quer saber se a qualidade de uma imagem PNG é afetada pelo nível de compactação escolhido:

Como eu entendo, os arquivos PNG usam compressão sem perdas. No entanto, quando estou usando um editor de imagens como o Gimp e tente salvar uma imagem como um arquivo PNG, ele pede um nível de compressão variando entre 0 e 9.

Se tiver um parâmetro de compressão que afete a precisão visual do comprimidoimagem, como é PNG sem perda, então? Alguém pode explicar isso para mim? Eu recebo comportamento sem perda somente quando eu definir o nível de compressão para 9?

Existe uma diferença na qualidade da imagem, dependendo do nível de compressão que você escolher?

A resposta

SuperUser contribuintes LordNeckbeard e jjlin têm a resposta para nós. Primeiro, LordNeckbeard:

PNG é Comprimido, mas Lossless

O nível de compressão é um trade-off entre o tamanho do arquivo e a velocidade de codificação / decodificação. Para generalizar excessivamente, mesmo os formatos não-imagem, como o FLAC, têm conceitos semelhantes.

Diferentes níveis de compressão, mesma saída decodificada

Embora os tamanhos dos arquivos sejam diferentes devido aos diferentes níveis de compressão, a saída decodificada real será idêntica. Você pode comparar os hashes MD5 das saídas descodificadas com ffmpeg usando o MD5 muxer. Isso é melhor mostrado com alguns exemplos.

Criar arquivos PNG

how-is-the-png-format-lossless-since-it-has-a-compression-parameter-01

  • Por padrão, ffmpeg usará -compression_level 100 para saída PNG.
  • Um teste rápido e descuidado mostrou que 100( o nível de compressão mais alto) tomaram aproximadamente três vezes mais para codificar e cinco vezes mais para decodificar do que 0( o nível de compressão mais baixo) neste exemplo.

Compare o tamanho do arquivo

how-is-the-png-format-lossless-since-it-has-a-compression-parameter-02

Decode os arquivos PNG e mostre MD5 Hashes

how-is-the-png-format-lossless-since-it-has-a-compression-parameter-03

Uma vez que ambos os hashes são iguais, você pode ter certeza de que as saídas descodificadas( os arquivos não compactados) são exatamente as mesmas.

Seguido pela resposta do jjlin:

PNG é sem perdas. GIMP provavelmente não está usando a melhor escolha de redação neste caso.

Pense nisso como qualidade de compressão ou nível de compressão .Com uma compressão mais baixa, você obtém um arquivo maior, mas demora menos tempo para produzir, enquanto que com maior compressão, você obtém um arquivo menor que leva mais tempo para produzir.

Normalmente, você obtém retornos decrescentes, ou seja, não diminui tanto o tamanho em comparação com o aumento de tempo que leva ao subir para os níveis de compressão mais altos, mas depende de você.

Tem alguma coisa a adicionar à explicação? Som desligado nos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.