Startseite » wie man » Ist das PNG-Format verlustfrei, da es einen Komprimierungsparameter hat?

    Ist das PNG-Format verlustfrei, da es einen Komprimierungsparameter hat?

    Das PNG-Format soll ein verlustfreies Format sein, aber wenn Sie ein Bild als PNG-Datei speichern, werden Sie aufgefordert, eine Komprimierungsstufe auszuwählen. Bedeutet das, dass das PNG-Format eigentlich nicht verlustfrei ist? Der heutige Q & A-Beitrag zu SuperUser hilft, die Verwirrung für einen neugierigen Leser zu beseitigen.

    Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.

    Die Frage

    SuperUser reader pkout möchte wissen, ob die Qualität eines PNG-Bildes von der gewählten Komprimierungsstufe beeinflusst wird:

    Nach meinem Verständnis verwenden PNG-Dateien eine verlustfreie Komprimierung. Wenn ich jedoch einen Bildeditor wie Gimp verwende und versuche, ein Bild als PNG-Datei zu speichern, wird eine Komprimierungsstufe zwischen 0 und 9 verlangt.

    Wenn es einen Kompressionsparameter gibt, der die visuelle Präzision des komprimierten Bildes beeinflusst, wie ist dann PNG verlustfrei? Kann mir das bitte jemand erklären? Bekomme ich ein verlustfreies Verhalten nur, wenn ich die Komprimierungsstufe auf 9 eingestellt habe??

    Gibt es einen Unterschied in der Bildqualität, abhängig von der gewählten Komprimierungsstufe??

    Die Antwort

    Die SuperUser-Mitwirkenden LordNeckbeard und jjlin haben die Antwort für uns. Zunächst, LordNeckbeard:

    PNG ist komprimiert, aber verlustfrei

    Die Komprimierungsstufe ist ein Kompromiss zwischen Dateigröße und Kodierungs- / Dekodiergeschwindigkeit. Um zu verallgemeinern, haben auch Nicht-Bildformate wie FLAC ähnliche Konzepte.

    Verschiedene Kompressionsstufen, gleiche decodierte Ausgabe

    Obwohl sich die Dateigrößen aufgrund der unterschiedlichen Komprimierungsstufen unterscheiden, ist die tatsächliche decodierte Ausgabe identisch. Sie können die MD5-Hashwerte der decodierten Ausgänge mit ffmpeg mit dem MD5-Muxer vergleichen. Dies wird am besten anhand einiger Beispiele gezeigt.

    Erstellen Sie PNG-Dateien

    • Standardmäßig verwendet ffmpeg -compression_level 100 für die PNG-Ausgabe.
    • Ein kurzer, schlampiger Test zeigte, dass 100 (die höchste Komprimierungsstufe) etwa drei Mal länger zum Kodieren und fünf Mal länger zum Dekodieren als 0 (die niedrigste Komprimierungsstufe) in diesem Beispiel erforderlich war.

    Vergleichen Sie die Dateigröße

    Dekodieren Sie die PNG-Dateien und zeigen Sie MD5-Hashes

    Da beide Hashes gleich sind, können Sie sicher sein, dass die dekodierten Ausgaben (die unkomprimierten Rohdateien) genau gleich sind.

    Gefolgt von der Antwort von jjlin:

    PNG ist verlustfrei. In diesem Fall verwendet GIMP höchstwahrscheinlich nicht die beste Wortwahl.

    Betrachten Sie es als Qualität der Kompression oder Komprimierungsgrad. Mit niedrigerer Komprimierung erhalten Sie eine größere Datei, die Produktion dauert jedoch kürzer, während Sie mit höherer Komprimierung eine kleinere Datei erhalten, deren Produktion länger dauert.

    In der Regel nimmt die Rendite ab, d. H. Nicht so sehr, wie die Zeit bis zum Erreichen der höchsten Komprimierungsstufe, aber es liegt an Ihnen.


    Haben Sie der Erklärung etwas hinzuzufügen? Sound off in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.