El format PNG no té pèrdues ja que té un paràmetre de compressió?
Se suposa que el format PNG és un format sense pèrdues, però quan deseu una imatge com a fitxer PNG, se us demana que trieu un nivell de compressió. Vol dir que el format PNG en realitat no és sense pèrdues? La publicació d’avui sobre superusuaris ajuda a aclarir la confusió d’un lector curiós.
La sessió de preguntes i respostes d’avui ens arriba per cortesia de SuperUser, una subdivisió de Stack Exchange, una agrupació de llocs web de preguntes i respostes dirigida per la comunitat.
La pregunta
SuperUser Reader pkout vol saber si la qualitat d'una imatge PNG es veu afectada pel nivell de compressió escollit:
Segons tinc entès, els fitxers PNG utilitzen compressió sense pèrdues. Tanmateix, quan faig servir un editor d’imatges com Gimp i intento desar una imatge com a fitxer PNG, demana un nivell de compressió que oscil·li entre 0 i 9.
Si té un paràmetre de compressió que afecta la precisió visual de la imatge comprimida, com és PNG sense pèrdues? Si us plau, algú m’ho pot explicar? Tinc un comportament sense pèrdues només quan estableixo el nivell de compressió en 9?
Hi ha alguna diferència en la qualitat de la imatge en funció del nivell de compressió que trieu?
La resposta
Els col·laboradors de SuperUsuari LordNeckbeard i jjlin tenen la resposta per nosaltres. En primer lloc, LordNeckbeard:
PNG està comprimit, però sense pèrdues
El nivell de compressió és una compensació entre la mida del fitxer i la velocitat de codificació / descodificació. Per generalitzar massa, fins i tot els formats que no són d’imatges com FLAC tenen conceptes similars.
Diferents nivells de compressió, mateixa sortida descodificada
Tot i que les mides dels fitxers són diferents a causa dels diferents nivells de compressió, la sortida real descodificada serà idèntica. Podeu comparar els hash MD5 de les sortides descodificades amb ffmpeg mitjançant el muxer MD5. Això es mostra millor amb alguns exemples.
Crea fitxers PNG
- Per defecte, ffmpeg utilitzarà -compression_level 100 per a la sortida PNG.
- Una prova ràpida i descuidada va mostrar que 100 (el nivell de compressió més alt) trigava aproximadament tres vegades més a codificar i cinc vegades més a descodificar que 0 (el nivell de compressió més baix) en aquest exemple.
Compareu la mida del fitxer
Descodifiqueu els fitxers PNG i mostreu els hash MD5
Com que tots dos hash són iguals, podeu estar segur que les sortides descodificades (els fitxers sense processar sense compressió) són exactament iguals.
Seguit de la resposta de jjlin:
PNG no té pèrdues. És probable que GIMP no faci servir la millor opció de redacció en aquest cas.
Penseu-hi com qualitat de compressió o bé nivell de compressió. Amb una compressió més baixa, obteniu un fitxer més gran, però es necessita menys temps per produir-lo, mentre que amb una compressió més gran, obteniu un fitxer més petit que triga a produir-se.
Normalment obteniu rendiments decreixents, és a dir, no tanta disminució de mida en comparació amb l’augment de temps que es triga en pujar als nivells de compressió més alts, però depèn de vosaltres.
Teniu alguna cosa que afegir a l'explicació? Sona als comentaris. Voleu llegir més respostes d'altres usuaris de Stack Exchange amb coneixements tècnics? Consulteu el fil de discussió complet aquí.