O formato PNG é sem perdas, pois possui um parâmetro de compactação?
O formato PNG deve ser um formato sem perdas, mas quando você salva uma imagem como um arquivo PNG, é solicitado que escolha um nível de compactação. Isso significa que o formato PNG na verdade não é sem perdas? O post de perguntas e respostas do SuperUser de hoje ajuda a esclarecer a confusão para um leitor curioso.
A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..
A questão
O leitor de SuperUser pkout quer saber se a qualidade de uma imagem PNG é afetada pelo nível de compactação escolhido:
Pelo que entendi, os arquivos PNG usam compactação sem perdas. No entanto, quando estou usando um editor de imagens, como o Gimp, e tento salvar uma imagem como um arquivo PNG, ele solicita um nível de compactação que varia entre 0 e 9..
Se tiver um parâmetro de compactação que afeta a precisão visual da imagem compactada, como o PNG é sem perda, então? Alguém pode explicar isso para mim? Só obtenho um comportamento sem perdas quando defino o nível de compressão para 9?
Existe uma diferença na qualidade da imagem, dependendo do nível de compactação escolhido??
A resposta
Os contribuidores do SuperUser, LordNeckbeard e jjlin, têm a resposta para nós. Primeiro, LordNeckbeard:
PNG é comprimido, mas sem perdas
O nível de compactação é uma compensação entre o tamanho do arquivo e a velocidade de codificação / decodificação. Para generalizar excessivamente, até mesmo formatos sem 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 compactação, a saída decodificada real será idêntica. Você pode comparar os hashes MD5 das saídas decodificadas com o ffmpeg usando o muxer MD5. Isto é melhor mostrado com alguns exemplos.
Criar arquivos PNG
- Por padrão, o ffmpeg usará -compression_level 100 para a saída PNG.
- Um teste rápido e desleixado mostrou que 100 (o nível de compactação mais alto) levou aproximadamente três vezes mais tempo para codificar e cinco vezes mais tempo para decodificar do que 0 (o nível de compactação mais baixo) neste exemplo.
Comparar tamanho do arquivo
Decodifique os arquivos PNG e mostre hashes MD5
Como os dois hashes são os mesmos, você pode ter certeza de que as saídas decodificadas (os arquivos raw não compactados) são exatamente as mesmas.
Seguido pela resposta de jjlin:
PNG é sem perdas. O GIMP provavelmente não está usando a melhor escolha de texto neste caso.
Pense nisso como qualidade de compressão ou nível de compressão. Com uma compactação mais baixa, você obtém um arquivo maior, mas leva menos tempo para produzir, enquanto que, com uma compactação mais alta, você obtém um arquivo menor que leva mais tempo para produzir.
Normalmente, você obtém retornos decrescentes, ou seja, não tanto quanto diminuir o tamanho em comparação com o aumento do tempo necessário para subir para os níveis mais altos de compactação, mas cabe a você.
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.