Le format PNG est-il sans perte puisqu'il comporte un paramètre de compression?
Le format PNG est censé être un format sans perte, mais lorsque vous enregistrez une image au format PNG, vous êtes invité à choisir un niveau de compression. Cela signifie-t-il que le format PNG n'est en réalité pas sans perte? Le poste de questions et réponses de SuperUser publié aujourd'hui aide à dissiper la confusion qui règne pour un lecteur curieux.
La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..
La question
SuperUser Reader, 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 je tente d'enregistrer une image au format PNG, un niveau de compression compris entre 0 et 9 est demandé..
Si le paramètre de compression affecte la précision visuelle de l'image compressée, comment le format PNG est-il sans perte? Quelqu'un pourrait-il me l'expliquer? Est-ce que je n'ai un comportement sans perte que lorsque je règle le niveau de compression sur 9??
Existe-t-il une différence dans la qualité de l'image en fonction du niveau de compression choisi??
La réponse
LordNeckbeard et jjlin, contributeurs au superutilisateur, ont la réponse pour nous. 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 excessivement, même les formats non-image tels que FLAC ont des concepts similaires.
Niveaux de compression différents, même résultat décodé
Bien que les tailles de fichier soient différentes 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 à l'aide du multiplexeur MD5. Ceci est mieux montré 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 à encoder et cinq fois plus à 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 libellé dans ce cas.
Pensez-y comme qualité de compression ou niveau de compression. 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 et plus long à produire..
En règle générale, vous obtenez des rendements décroissants, c’est-à-dire que la taille ne diminue pas autant par rapport à 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? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.