30Aug

Le format PNG est-il sans perte puisqu'il possède un paramètre de compression?

comment-est-le-png-format-sans-perte-puisque-il-a-un-compression-paramètre-00

Le format PNG est censé être un format sans perte, mais lorsque vous enregistrez une image en tant que fichier PNG, il vous est demandé de choisir un niveau de compression. Est-ce que cela signifie que le format PNG n'est pas sans perte après tout? Le SuperUser Q & A post d'aujourd'hui aide à dissiper la confusion pour un lecteur curieux.

Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.

La question pkout

SuperUser 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 la 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 possède un paramètre de compression affectant la précision visuelle duimage, comment PNG est sans perte alors? Quelqu'un pourrait-il me l'expliquer? Est-ce que j'obtiens un comportement sans perte seulement quand je mets le niveau de compression à 9?

Y at-il une différence dans la qualité de l'image en fonction du niveau de compression que vous choisissez?

La réponse

SuperUser contributeurs 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 de codage / décodage. Pour généraliser trop, même les formats non-image tels que FLAC ont des concepts similaires.

Niveaux de compression différents, même sortie décodée

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 en utilisant le muxer MD5.Ceci est mieux montré avec quelques exemples.

Créer des fichiers PNG

comment-est-le-png-format-sans-perte-puisque-il-a-un-paramètre de compression-01

  • 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 pour être encodé et cinq fois plus long pour être décodé que 0( le niveau de compression le plus bas) dans cet exemple.

Comparer la taille du fichier

comment-est-le-png-format-sans-perte-puisque-il-a-un-paramètre de compression-02

Décoder les fichiers PNG et afficher les hachages MD5

comment-est-le-png-format-sans-perte-puisqu

Comme les deux hachages sont les mêmes, 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 cela prend moins de temps à produire, alors qu'avec une compression plus élevée, vous obtenez un fichier plus petit qui prend plus de temps à produire.

Généralement, vous obtenez des rendements décroissants, c'est-à-dire moins de réduction de taille par rapport à l'augmentation du temps nécessaire pour atteindre les niveaux de compression les plus élevés, mais cela dépend de vous.

Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.