Σημειώσεις από την ομάδα για την τέχνη, τις μορφές και τις μικρές αποφάσεις πίσω από μια καλή κυκλική περικοπή.
Το περιεχόμενο χωρίς απώλειες, τι αποθηκεύει το PNG
Το PNG στηρίζεται στο DEFLATE, έναν αλγόριθμο χωρίς απώλειες. Γράφει τις τιμές RGBA κάθε εικονοστοιχείου ακριβώς, περνά πρώτα ένα αντιστρέψιμο φίλτρο πάνω από κάθε γραμμή σάρωσης, μετά στριμώχνει το σύνολο με μια ροή τύπου zlib. Χωρίς απώλειες εδώ σημαίνει ότι οι τιμές που αποσυμπιέζετε είναι ψηφίο προς ψηφίο αυτές που βάλατε. Στην περίπτωση JPG προς PNG, οι τιμές που μπαίνουν είναι τα εικονοστοιχεία που επιστρέφει ο περιηγητής αφού αποκωδικοποιήσει το JPEG, κι αυτά κουβαλούν ήδη κάθε προσέγγιση που εισήγαγε η αρχική αποθήκευση JPEG. Έτσι το PNG καταγράφει υπάκουα τις προσεγγίσεις, όχι την πραγματική σκηνή που φωτογραφήθηκε. Μετρημένα, ένα JPEG 17 KB στα 1024x768 προσγειώνεται κοντά στα 105 KB ως PNG, ενώ ένα JPEG 116 KB στα 3840x2160 φτάνει περίπου τα 384 KB. Τα πολλαπλάσια ακολουθούν την ανάλυση παρά τη ρύθμιση ποιότητας του JPEG, γι αυτό μένουν περίπου σταθερά σε διάφορα περιεχόμενα. Το περιεχόμενο κερδίζει τη θέση του σταματώντας την πτώση, όχι αντιστρέφοντάς την.
Γιατί η ποιότητα του JPEG δεν μπορεί να ανακτηθεί
Το JPEG ρίχνει πληροφορία οριστικά. Η συμπίεσή του τρέχει έναν μετασχηματισμό συνημιτόνου στα μπλοκ 8x8, στρογγυλοποιεί τους συντελεστές συχνότητας προς τα κάτω σε ένα πιο χοντρό σύνολο και αποθηκεύει εκείνους τους στρογγυλεμένους αριθμούς. Εκείνη η στρογγυλοποίηση πάει μόνο προς μία κατεύθυνση, οπότε ένας συντελεστής που διάβαζε 47 πριν κουμπώσει στο 50 δεν μπορεί ποτέ να σπρωχτεί πίσω, και το αρχείο δεν κρατά μνήμη του 47. Η αποκωδικοποίηση του JPEG ξαναχτίζει εικονοστοιχεία από τους στρογγυλεμένους συντελεστές, που είναι εικασίες για τα πρωτότυπα. Τυλίξτε εκείνες τις εικασίες σε PNG και παίρνετε ένα άψογο αντίγραφο μιας ελαττωματικής εικόνας. Τίποτα από αυτά δεν είναι ένα μειονέκτημα του PNG ή του Araluma, έτσι απλώς δουλεύει η συμπίεση με απώλειες, με οτιδήποτε ρίχνεται στην αποθήκευση να μένει ριγμένο. Ο μόνος δρόμος προς καλύτερη ποιότητα JPEG είναι να γυρίσετε στην ασυμπίεστη πηγή ή στο αρχείο RAW.
Μετρημένη αύξηση μεγέθους αρχείου
Το πόσο φουσκώνει ένα JPG στον δρόμο του προς PNG εξαρτάται από την εικόνα, αλλά η τάση είναι σταθερή. Πολυάσχολες φωτογραφίες με πλούσιες τονικές μεταβολές μεγαλώνουν περισσότερο, γιατί αυτό είναι το υλικό που το JPEG συμπιέζει υπέροχα ενώ ο κωδικοποιητής χωρίς απώλειες του PNG δεν προφταίνει σε τέτοια θορυβώδη εικονοστοιχεία. Από τις δικές του δοκιμές αυτού του εργαλείου, μια φωτογραφία JPEG 17 KB στα 1024x768 γίνεται ένα PNG 105 KB, περίπου εξαπλάσιο άλμα, και μια φωτογραφία JPEG 116 KB στα 3840x2160 γίνεται ένα PNG 384 KB, περίπου 3,3 φορές μεγαλύτερο. Επίπεδο υλικό όπως στιγμιότυπα οθόνης και εικονίδια ταιριάζει άσχημα στο JPEG εξαρχής και τείνει να κουβαλά περισσότερο βάρος εκεί, οπότε το PNG του μεγαλώνει λιγότερο απότομα. Το μάθημα είναι ξεκάθαρο, αν ένα μικρότερο αποτέλεσμα είναι αυτό που κυνηγάτε, το να γυρίσετε ένα JPG σε PNG σας σπρώχνει προς τη λάθος κατεύθυνση.
Διαφάνεια, η δυνατότητα έναντι του περιεχομένου
Το κανάλι άλφα 8 ψηφίων του PNG είναι ένα χαρακτηριστικό του περιεχομένου, αφήνοντας κάθε εικονοστοιχείο να κουβαλήσει μια αδιαφάνεια από 0 για πλήρως καθαρό έως 255 για πλήρως συμπαγές. Όταν ένα JPG ξαναχτίζεται ως PNG μέσα από τη μηχανή εικόνας της πλατφόρμας, κάθε εικονοστοιχείο βγαίνει στο 255, πλήρως αδιαφανές, γιατί το JPG δεν είχε καμία διαφάνεια να περάσει εξαρχής. Το PNG στέκει έτοιμο να αποθηκεύσει δεδομένα άλφα, το αρχείο απλώς δεν κρατά κανένα, αφού κανένα δεν υπήρχε στην πηγή. Το να βάλετε διαφάνεια στην εικόνα παίρνει μια ξεχωριστή εργασία, είτε μασκάροντας το φόντο με το χέρι σε έναν επεξεργαστή είτε τρέχοντας μια αυτόματη αφαίρεση φόντου. Ένας αφαιρέτης ρυθμισμένος να εντοπίζει το θέμα μπορεί να παραδώσει ένα PNG με γνήσιο άλφα θέτοντας την αδιαφάνεια των εικονοστοιχείων του φόντου στο μηδέν μετά τη μετατροπή.
Χειρισμός μεταδεδομένων EXIF
Στο ξαναχτίσιμο του αρχείου, ό,τι EXIF, IPTC και XMP κουβαλούσε το JPG εξαφανίζεται από το PNG σε όλους τους περιηγητές, και μαζί φεύγουν οι συντεταγμένες θέσης, το μοντέλο της μηχανής, η στιγμή της λήψης, οι γραμμές δικαιωμάτων και κάθε προσαρμοσμένο πεδίο. Με τα χρωματικά προφίλ τα πράγματα διαφέρουν ελαφρώς. Σε Chrome και Safari η σήμανση sRGB επιβιώνει στο τελικό αρχείο, ενώ ο Firefox τη διώχνει μαζί με τα υπόλοιπα. Το αποτέλεσμα είναι ότι το PNG ανοίγει με ασφάλεια ως sRGB παντού, όμως ένα ευρύ προφίλ όπως το Display-P3 ή το Adobe RGB χάνεται περνώντας από τον Firefox. Στη συνηθισμένη χρήση για ιστό και διαμοιρασμό, αυτή η απώλεια σημάνσεων μάλλον βοηθά, αφού ελαφραίνει λίγο το αρχείο και σβήνει τα ίχνη τοποθεσίας από τις λήψεις σας. Αν όμως δουλεύετε επαγγελματικά ή για αρχείο και τα ενσωματωμένα στοιχεία πρέπει να μείνουν άθικτα, φροντίστε αυτή την αλυσίδα με ένα εξειδικευμένο εργαλείο πριν ή μετά το πέρασμα της μορφής.
Η ιδιωτικότητα και πού καταλήγει η δουλειά
Πού καταλήγει η δουλειά εξαρτάται από την ποσότητα. Για μία μόνο εικόνα, τίποτα δεν φεύγει από το πρόγραμμα περιήγησης, και μπορείτε να το ελέγξετε ζωντανά σε δευτερόλεπτα. Ανοίξτε τα DevTools του Chrome, περάστε στον πίνακα Δικτύου, φιλτράρετε με XHR και Fetch και μετατρέψτε ένα αρχείο. Τίποτα δεν εμφανίζεται όσο τρέχει η κωδικοποίηση. Για δύο ή περισσότερα, το Araluma τα στέλνει στον διακομιστή μας, που μετατρέπει, ομαδοποιεί το αποτέλεσμα και επιστρέφει έναν σύνδεσμο λήψης. Αυτός ο σύνδεσμος και τα μετατραπέντα αρχεία διαγράφονται σε περίπου 2 ώρες. Η διαδρομή για μία εικόνα κρατά τα πάντα στη συσκευή, εκτός δικτύου, ενώ μια παρτίδα το ανταλλάσσει με το να κλείνετε πολλά αρχεία μονομιάς. Για στιγμιότυπο κάτι προσωπικού ή φωτογραφία σημειωμένη με την τοποθεσία σας, η μετατροπή μία μία το κρατά στη μηχανή σας, μια πραγματική διαφορά, όχι ένα σύνθημα.