Pagina principala » HOWTO » Este PNG Format Lossless deoarece are un parametru de compresie?

    Este PNG Format Lossless deoarece are un parametru de compresie?

    Formatul PNG trebuie să fie un format fără pierderi, dar când salvați o imagine ca fișier PNG, vi se cere să alegeți un nivel de compresie. Acest lucru înseamnă că formatul PNG nu este de fapt fără pierderi la urma urmei? Postul de astăzi SuperUser Q & A ajută la clarificarea confuziei pentru un cititor curios.

    Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

    Intrebarea

    Aplicația de citire a super-utilizatorului pkout dorește să afle dacă calitatea unei imagini PNG este afectată de nivelul de compresie ales:

    După cum am înțeles, fișierele PNG utilizează compresie fără pierderi. Cu toate acestea, când folosesc un editor de imagini, cum ar fi Gimp, și încerc să salvez o imagine ca fișier PNG, acesta cere un nivel de compresie cuprins între 0 și 9.

    Dacă are un parametru de compresie care afectează precizia vizuală a imaginii comprimate, cum este PNG fără pierderi atunci? Poate cineva să-mi explice asta? Nu am comportament fără pierderi decât când am setat nivelul de compresie la 9?

    Există o diferență în calitatea imaginii în funcție de nivelul de compresie pe care îl alegeți?

    Răspunsul

    Contribuitorii pentru SuperUser LordNeckbeard și jjlin au răspunsul pentru noi. În primul rând, LordNeckbeard:

    PNG este comprimat, dar fără pierderi

    Nivelul de compresie este un compromis între dimensiunea fișierului și viteza de codare / decodare. Pentru a generaliza prea mult, formatele non-imagine, cum ar fi FLAC, au concepte similare.

    Diferite niveluri de compresie, aceeași ieșire decodificată

    Deși dimensiunile fișierelor sunt diferite datorită diferitelor niveluri de compresie, ieșirea reală decodificată va fi identică. Puteți compara machetele MD5 ale ieșirilor decodate cu ffmpeg utilizând muxerul MD5. Acest lucru este indicat cel mai bine cu câteva exemple.

    Creați fișiere PNG

    • În mod implicit, ffmpeg va folosi -compression_level 100 pentru ieșirea PNG.
    • Un test rapid și neclintit a arătat că 100 (cel mai înalt nivel de compresie) a durat aproximativ 3 ori mai mult pentru a codifica și de cinci ori mai mult pentru a decoda decât 0 (cel mai mic nivel de compresie) din acest exemplu.

    Comparați dimensiunea fișierului

    Decodificați fișierele PNG și afișați hash-urile MD5

    Deoarece ambele hashes sunt aceleași, puteți fi siguri că ieșirile decodate (fișierele brute necomprimate) sunt exact aceleași.

    Urmat de răspunsul de la jjlin:

    PNG este fără pierderi. În acest caz, GIMP nu folosește cea mai bună alegere de formulare.

    Gândește-te la asta calitatea compresiei sau nivel de compresie. Cu o compresie mai mică, obțineți un fișier mai mare, dar este nevoie de mai puțin timp pentru a produce, în timp ce cu o compresie mai mare obțineți un fișier mai mic care durează mai mult timp pentru a produce.

    În mod obișnuit, obțineți profituri reduse, și anume nu diminuarea dimensiunilor în comparație cu creșterea timpului necesar pentru a ajunge la cele mai ridicate niveluri de compresie, dar depinde de dvs..


    Aveți ceva de adăugat la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.