Είναι η μορφή PNG Lossless δεδομένου ότι έχει μια παράμετρο συμπίεσης;
Η μορφή PNG υποτίθεται ότι είναι χωρίς απώλειες μορφή, αλλά όταν αποθηκεύετε μια εικόνα ως αρχείο PNG, σας ζητείται να επιλέξετε ένα επίπεδο συμπίεσης. Μήπως αυτό σημαίνει ότι η μορφή PNG στην πραγματικότητα δεν είναι χωρίς απώλειες μετά από όλα; Η σημερινή θέση Q & A της SuperUser βοηθά στην εκκαθάριση της σύγχυσης για έναν περίεργο αναγνώστη.
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.
Το ερώτημα
Ο αναγνώστης SuperUser pkout θέλει να μάθει εάν η ποιότητα μιας εικόνας PNG επηρεάζεται από το επιλεγμένο επίπεδο συμπίεσης:
Όπως το καταλαβαίνω, τα αρχεία PNG χρησιμοποιούν συμπίεση χωρίς απώλειες. Ωστόσο, όταν χρησιμοποιώ έναν επεξεργαστή εικόνας όπως το Gimp και προσπαθώ να αποθηκεύσω μια εικόνα ως αρχείο PNG, ζητά ένα επίπεδο συμπίεσης που κυμαίνεται μεταξύ 0 και 9.
Εάν έχει μια παράμετρο συμπίεσης που επηρεάζει την οπτική ακρίβεια της συμπιεσμένης εικόνας, πώς είναι PNG χωρίς απώλειες τότε; Μπορεί κάποιος να μου το εξηγήσει αυτό; Έχω συμπεριφορά χωρίς απώλειες μόνο όταν ρυθμίσω το επίπεδο συμπίεσης στο 9?
Υπάρχει διαφορά στην ποιότητα της εικόνας ανάλογα με το επίπεδο συμπίεσης που επιλέγετε?
Η απάντηση
Οι συνδρομητές του SuperUser LordNeckbeard και jjlin έχουν την απάντηση για εμάς. Πρώτα επάνω, LordNeckbeard:
Το PNG είναι συμπιεσμένο, αλλά χωρίς απώλειες
Το επίπεδο συμπίεσης είναι μια ανταλλαγή μεταξύ του μεγέθους του αρχείου και της ταχύτητας κωδικοποίησης / αποκωδικοποίησης. Για να γενικεύσετε υπερβολικά, ακόμη και οι μη μορφές εικόνας, όπως το FLAC, έχουν παρόμοιες έννοιες.
Διαφορετικά επίπεδα συμπίεσης, ίδια αποκωδικοποιημένη παραγωγή
Αν και τα μεγέθη των αρχείων είναι διαφορετικά λόγω των διαφορετικών επιπέδων συμπίεσης, η πραγματική αποκωδικοποιημένη έξοδος θα είναι ίδια. Μπορείτε να συγκρίνετε τα MD5 hashes των αποκωδικοποιημένων εξόδων με ffmpeg χρησιμοποιώντας το MD5 muxer. Αυτό φαίνεται καλύτερα με μερικά παραδείγματα.
Δημιουργία αρχείων PNG
- Από προεπιλογή, το ffmpeg θα χρησιμοποιήσει το -compression_level 100 για την έξοδο PNG.
- Μια γρήγορη, αδύναμη δοκιμή έδειξε ότι το 100 (το υψηλότερο επίπεδο συμπίεσης) χρειάστηκε περίπου τρεις φορές περισσότερο για κωδικοποίηση και πέντε φορές περισσότερο για να αποκωδικοποιηθεί από το 0 (το χαμηλότερο επίπεδο συμπίεσης) σε αυτό το παράδειγμα.
Συγκρίνετε το μέγεθος αρχείου
Αποκωδικοποίηση των αρχείων PNG και εμφάνιση των MD5 Hashes
Δεδομένου ότι και οι δύο hashes είναι οι ίδιες, μπορείτε να είστε βέβαιοι ότι οι αποκωδικοποιημένες εξόδους (τα μη συμπιεσμένα ωμά αρχεία) είναι ακριβώς τα ίδια.
Ακολουθούμενη από την απάντηση του jjlin:
Το PNG είναι χωρίς απώλειες. Το GIMP πιθανότατα δεν χρησιμοποιεί την καλύτερη δυνατή διατύπωση στην περίπτωση αυτή.
Σκεφτείτε το ως ποιότητα συμπίεσης ή επίπεδο συμπίεσης. Με χαμηλότερη συμπίεση, παίρνετε ένα μεγαλύτερο αρχείο, αλλά παίρνει λιγότερο χρόνο για να παράγει, ενώ με υψηλότερη συμπίεση, παίρνετε ένα μικρότερο αρχείο που διαρκεί περισσότερο για να παράγει.
Συνήθως λαμβάνετε μειούμενες αποδόσεις, δηλ. Όχι τόσο μεγάλη μείωση του μεγέθους σε σύγκριση με την αύξηση του χρόνου που χρειάζεται όταν ανεβείτε στα υψηλότερα επίπεδα συμπίεσης, αλλά εξαρτάται από εσάς.
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.