Le format PNG est censé être un format sans perte, mais lorsque vous enregistrez une image en tant que fichier PNG, vous êtes invité à choisir un niveau de compression. Cela signifie-t-il que le format PNG n’est pas sans perte après tout? Le post de questions-réponses sur les super-utilisateurs d’aujourd’hui aide à dissiper la confusion pour un lecteur curieux.
La question
Le lecteur SuperUser pkout veut savoir si la qualité d’une image PNG est affectée par le niveau de compression choisi:
Si je comprends bien, les fichiers PNG utilisent une compression sans perte. Cependant, lorsque j’utilise un éditeur d’image tel que Gimp et que j’essaie d’enregistrer une image en tant que fichier PNG, il demande un niveau de compression compris entre 0 et 9.
S’il a un paramètre de compression qui affecte la précision visuelle de l’image compressée, comment le PNG est-il alors sans perte? Quelqu’un pourrait-il me l’expliquer? Est-ce que j’obtiens un comportement sans perte uniquement lorsque je règle le niveau de compression sur 9?
Y a-t-il une différence dans la qualité de l’image en fonction du niveau de compression choisi?
La réponse
Les contributeurs SuperUser LordNeckbeard et jjlin ont la réponse pour nous. Tout d’abord, LordNeckbeard:
PNG est compressé, mais sans perte
Le niveau de compression est un compromis entre la taille du fichier et la vitesse d’encodage / décodage. Pour généraliser à l’excès, même les formats sans image tels que FLAC ont des concepts similaires.
Différents niveaux de compression, même sortie décodée
Bien que la taille des fichiers soit différente en raison des différents niveaux de compression, la sortie décodée réelle sera identique. Vous pouvez comparer les Hachages MD5 des sorties décodées avec ffmpeg en utilisant le Multiplexeur MD5. Ceci est mieux illustré avec quelques exemples.
Créer des fichiers PNG
- Par défaut, ffmpeg utilisera -compression_level 100 pour la sortie PNG.
- Un test rapide et bâclé a montré que 100 (le niveau de compression le plus élevé) prenait environ trois fois plus de temps à coder et cinq fois plus de temps à décoder que 0 (le niveau de compression le plus bas) dans cet exemple.
Comparer la taille du fichier
Décoder les fichiers PNG et afficher les hachages MD5
Puisque les deux hachages sont identiques, vous pouvez être assuré que les sorties décodées (les fichiers bruts non compressés) sont exactement les mêmes.
Suivi de la réponse de jjlin:
PNG est sans perte. GIMP n’utilise probablement pas le meilleur choix de formulation dans ce cas.
Pensez-y comme ou. Avec une compression plus faible, vous obtenez un fichier plus volumineux, mais sa production prend moins de temps, tandis qu’avec une compression plus élevée, vous obtenez un fichier plus petit qui prend plus de temps à produire.
En général, vous obtenez des rendements décroissants, c’est-à-dire une diminution de taille moins importante que l’augmentation du temps nécessaire pour atteindre les niveaux de compression les plus élevés, mais c’est à vous de décider.
Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.