Μετάβαση στο περιεχόμενο

Πώς λειτουργεί το oCompress

Τι συμβαίνει όταν αφήνετε ένα αρχείο, πώς να ελέγξετε ότι τίποτα δεν ανεβαίνει και τι σημαίνει πραγματικά συμπίεση με απώλειες και χωρίς απώλειες.

Η σύντομη εκδοχή

Όταν ανοίγετε μια σελίδα εργαλείου, το πρόγραμμα περιήγησής σας κατεβάζει τη σελίδα και ένα μικρό πρόγραμμα, τον συμπιεστή. Όταν προσθέτετε ένα αρχείο, το πρόγραμμα περιήγησης το διαβάζει, ο συμπιεστής το επεξεργάζεται στον δικό σας επεξεργαστή και το αποτέλεσμα σας επιστρέφεται ως λήψη. Σε κανένα σημείο το αρχείο δεν στέλνεται μέσω του δικτύου. Όλη η διαδικασία μοιάζει κάπως έτσι:

  1. Φόρτωση. Πρώτα φορτώνονται η σελίδα και η διεπαφή του εργαλείου. Η μηχανή για έναν τύπο αρχείων (εικόνες, βίντεο και ήχος, ή έγγραφα) κατεβαίνει μόνο όταν προσθέσετε αντίστοιχο αρχείο, οπότε δεν κατεβάζετε ποτέ κώδικα που δεν χρησιμοποιείτε.
  2. Ανάγνωση. Το πρόγραμμα περιήγησης δίνει στη σελίδα πρόσβαση ακριβώς στα αρχεία που επιλέξατε, σε τίποτε άλλο στη συσκευή σας.
  3. Συμπίεση. Η δουλειά τρέχει σε ένα Web Worker, ένα νήμα παρασκηνίου του προγράμματος περιήγησης, ώστε η σελίδα να ανταποκρίνεται και να μπορείτε να ακυρώσετε οποιαδήποτε στιγμή.
  4. Αποθήκευση. Το συμπιεσμένο αρχείο δημιουργείται στη μνήμη (τα μεγάλα βίντεο στον ιδιωτικό χώρο αποθήκευσης του προγράμματος περιήγησης) και αποθηκεύεται μέσω της κανονικής λήψης του προγράμματος περιήγησης, ένα ένα ή σε ZIP.

Τι τρέχει στο πρόγραμμα περιήγησής σας

Τα σύγχρονα προγράμματα περιήγησης μπορούν να εκτελούν μεταγλωττισμένο κώδικα με ταχύτητα κοντά σε αυτή των εγγενών προγραμμάτων μέσω του WebAssembly, και δίνουν στις ιστοσελίδες πρόσβαση στους κωδικοποιητές βίντεο υλικού της συσκευής μέσω μιας διεπαφής που λέγεται WebCodecs. Το oCompress χρησιμοποιεί και τα δύο:

  • Εικόνες: MozJPEG για JPEG, OxiPNG και ένας κβαντιστής παλέτας για PNG, ο κωδικοποιητής WebP από τη βιβλιοθήκη libwebp της Google, libavif για AVIF, SVGO για SVG, και ειδικοί αποκωδικοποιητές και κωδικοποιητές για GIF και TIFF. Οι κωδικοποιητές JPEG, PNG, WebP και AVIF είναι μεταγλωττισμένοι σε WebAssembly.
  • Βίντεο και ήχος: WebCodecs με τη βιβλιοθήκη Mediabunny για την ανάγνωση και εγγραφή κοντέινερ όπως MP4 και WebM. Η κωδικοποίηση χρησιμοποιεί τον κωδικοποιητή υλικού του γραφικού σας chip όπου υπάρχει, γι' αυτό μπορεί να είναι γρήγορη ακόμη και μέσα σε πρόγραμμα περιήγησης. Τα αρχεία MP3 γράφονται από τον κωδικοποιητή LAME και τα FLAC από το libFLAC, και τα δύο μεταγλωττισμένα σε WebAssembly και φορτώνονται μόνο όταν χρειάζονται.
  • Έγγραφα: δικός μας κώδικας, βασισμένος σε βιβλιοθήκες PDF και ZIP ανοιχτού κώδικα, ανοίγει αρχεία PDF και Office, επανασυμπιέζει τις εικόνες τους με τους κωδικοποιητές εικόνας και γράφει νέο αρχείο.

Κάθε βιβλιοθήκη που διανέμουμε είναι ανοιχτού κώδικα: οι περισσότερες με επιτρεπτικές άδειες όπως MIT, BSD και Apache 2.0, το Mediabunny με την MPL 2.0, και ο κωδικοποιητής MP3 LAME με την LGPL ως ξεχωριστό, αντικαταστάσιμο αρχείο. Δείτε τη λίστα βιβλιοθηκών με εκδόσεις και άδειες.

Πώς μπορείτε να ελέγξετε ότι δεν ανεβαίνει τίποτα

Δεν χρειάζεται να μας πιστέψετε στον λόγο μας. Δύο απλές δοκιμές:

  • Αποσυνδεθείτε. Ανοίξτε μια σελίδα εργαλείου, συμπιέστε ένα αρχείο ώστε να φορτωθεί η μηχανή, μετά απενεργοποιήστε το Wi-Fi ή τα δεδομένα κινητής και συμπιέστε ένα άλλο αρχείο του ίδιου τύπου. Λειτουργεί, γιατί τίποτα δεν χρειάζεται το δίκτυο.
  • Παρακολουθήστε το δίκτυο. Στον Chrome, στον Edge ή στον Firefox, πατήστε F12, ανοίξτε την καρτέλα Δίκτυο και συμπιέστε ένα αρχείο. Θα δείτε τον κώδικα του συμπιεστή να φορτώνεται από τον ιστότοπό μας, και αιτήματα από στατιστικά και διαφημίσεις, αλλά κανένα αίτημα που να μεταφέρει το αρχείο σας. Μια φωτογραφία 10 MB θα εμφανιζόταν ως ανέβασμα 10 MB· δεν υπάρχει κανένα.

Η σελίδα στέλνει ανώνυμα συμβάντα χρήσης στο Google Analytics, όπως «συμπιέστηκε ένα JPG μερικών megabyte». Αυτά τα συμβάντα περιέχουν το εργαλείο, τον τύπο αρχείου και το μέγεθος, την εξοικονόμηση και τον χρόνο επεξεργασίας ως χοντρικά εύρη, ποτέ το όνομα του αρχείου ή το περιεχόμενό του.

Συμπίεση χωρίς απώλειες: ίδιο περιεχόμενο, λιγότερα byte

Η συμπίεση χωρίς απώλειες βρίσκει πλεονασμούς, πράγματα που αποθηκεύονται περισσότερες από μία φορές ή που μπορούν να προβλεφθούν, και τα γράφει πιο συμπαγώς. Η αποκωδικοποίηση αντιστρέφει τη διαδικασία με ακρίβεια. Τρεις ιδέες εμφανίζονται σχεδόν σε κάθε μορφή χωρίς απώλειες:

  • Πρόβλεψη. Τα γειτονικά pixel μιας εικόνας ή τα διαδοχικά δείγματα ήχου είναι συνήθως παρόμοια. Αν αποθηκεύσετε τη μικρή διαφορά από μια πρόβλεψη αντί για την πλήρη τιμή, μένουν αριθμοί κυρίως κοντά στο μηδέν. Έτσι λειτουργούν τα φίλτρα του PNG και ο γραμμικός προβλέπτης του FLAC.
  • Επανάληψη. Οι επαναλαμβανόμενες ακολουθίες αντικαθίστανται από μια σύντομη αναφορά στο προηγούμενο αντίγραφο. Αυτό είναι το κομμάτι LZ77 του DEFLATE, που χρησιμοποιείται σε ZIP, PNG και αρχεία Office.
  • Κωδικοποίηση εντροπίας. Οι συχνές τιμές παίρνουν σύντομους κωδικούς και οι σπάνιες μακρύτερους (κωδικοποίηση Huffman ή αριθμητική κωδικοποίηση).

Η συμπίεση χωρίς απώλειες έχει ένα φυσικό όριο: ο τυχαίος θόρυβος δεν προβλέπεται, οπότε μια φωτογραφία με κόκκο ή μια ηχογράφηση με θόρυβο δεν μικραίνει ποτέ πολύ χωρίς απώλειες. Γι' αυτό επίσης η συμπίεση ενός αρχείου που είναι ήδη συμπιεσμένο, όπως ένα JPEG μέσα σε ZIP, δεν εξοικονομεί σχεδόν τίποτα.

Συμπίεση με απώλειες: αφαιρείται ό,τι δεν θα σας λείψει

Οι κωδικοποιητές με απώλειες πάνε πιο μακριά, απορρίπτοντας πληροφορίες που τα ανθρώπινα μάτια και αυτιά μόλις αντιλαμβάνονται. Τα JPEG και WebP αποθηκεύουν το χρώμα σε χαμηλότερη ανάλυση από τη φωτεινότητα και στρογγυλεύουν τη λεπτή λεπτομέρεια υψηλής συχνότητας. Τα MP3, AAC και Opus αφαιρούν ήχους που καλύπτονται από δυνατότερους. Οι κωδικοποιητές βίντεο όπως το H.264 αποθηκεύουν μια πλήρη εικόνα κάθε τόσο και, ενδιάμεσα, κυρίως κίνηση και αλλαγές.

Η ρύθμιση ποιότητας ή ρυθμού bit καθορίζει πόσα απορρίπτονται. Σε μέτριες ρυθμίσεις η απώλεια είναι πολύ δύσκολο να γίνει αντιληπτή· αν το παρακάνετε, εμφανίζονται τυπικές παραμορφώσεις: τετραγωνάκια και φωτοστέφανα στις εικόνες, μεταλλικός ή «υποβρύχιος» ήχος, μουτζούρωμα σε γρήγορες σκηνές βίντεο.

Τι υπόσχονται τα εργαλεία και τι όχι

  • Δεν παίρνετε ποτέ μεγαλύτερο αρχείο. Αν το αποτέλεσμα δεν είναι μικρότερο, το εργαλείο επιστρέφει το πρωτότυπο και σας λέει ότι είναι ήδη βέλτιστο.
  • Τα έγγραφα και τα αρχεία ήχου δίνουν ακριβώς τα ίδια byte για το ίδιο αρχείο και τις ίδιες ρυθμίσεις· οι κωδικοποιητές βίντεο υλικού μπορεί να διαφέρουν κατά λίγα byte από εκτέλεση σε εκτέλεση.
  • Το κείμενο στα έγγραφα μένει κείμενο· οι σελίδες δεν μετατρέπονται ποτέ σε εικόνες.
  • Τα μεταδεδομένα εικόνων, όπως η τοποθεσία GPS, αφαιρούνται από προεπιλογή, ενώ το χρωματικό προφίλ και ο προσανατολισμός διατηρούνται. Τα μεταδεδομένα βίντεο, όπως τοποθεσία, συσκευή και ημερομηνίες, αφαιρούνται επίσης από προεπιλογή· ο ήχος κρατά τις ετικέτες και το εξώφυλλο, εκτός αν το απενεργοποιήσετε.

Αυτό που δεν μπορούμε να υποσχεθούμε είναι ένα συγκεκριμένο ποσοστό. Η εξοικονόμηση εξαρτάται αποκλειστικά από τον τρόπο που φτιάχτηκε το αρχείο: μια φωτογραφία κινητού ή ένα σαρωμένο PDF έχει συνήθως άφθονο περιθώριο, ένα αρχείο που έχει ήδη βελτιστοποιηθεί ελάχιστο. Το εργαλείο δείχνει τα ακριβή μεγέθη πριν και μετά για κάθε αρχείο.

Τα όρια της συμπίεσης σε πρόγραμμα περιήγησης

Μια καρτέλα είναι ένα απομονωμένο περιβάλλον με περιορισμένη μνήμη, και αυτό ορίζει τα όρια του πρακτικά εφικτού. Το εργαλείο δέχεται εικόνες έως 200 MB και 100 megapixel, αρχεία PDF και Office έως 300 MB, και βίντεο και ήχο έως 4 GB σε υπολογιστή (1 GB σε κινητά), αν και τα μεγάλα βίντεο 4K μπορεί πάλι να μη χωρούν στη μνήμη μιας καρτέλας. Η ταχύτητα εξαρτάται από το υλικό σας: στις δοκιμές μας σε γρήγορο υπολογιστή με Windows στον Chrome, ένα λεπτό βίντεο 1080p χρειάστηκε περίπου 20 δευτερόλεπτα και μια φωτογραφία 24 megapixel περίπου 2,5 δευτερόλεπτα· τα κινητά μπορεί να είναι πολύ πιο αργά. Το βίντεο και οι περισσότερες μετατροπές ήχου χρειάζονται WebCodecs, που το προσφέρουν οι τρέχουσες εκδόσεις των Chrome, Edge, Opera, ο Firefox 130+ και το Safari 26+· τα WAV και AIFF μπορούν να γίνουν MP3, FLAC ή WAV και χωρίς αυτό.

Λίγες μορφές δεν έχουν καθόλου αποκωδικοποιητή στα προγράμματα περιήγησης, όπως τα WMA, AVI και WMV, και τα παλιά δυαδικά αρχεία Office δεν μπορούν να ξαναγραφτούν με ασφάλεια. Για αυτά, το εργαλείο εξηγεί τις επιλογές αντί να παραγάγει ένα αρχείο που μπορεί να είναι χαλασμένο. Όταν μια εργασία είναι πολύ μεγάλη για πρόγραμμα περιήγησης, η έντιμη πρόταση είναι ένα πρόγραμμα υπολογιστή, όπως το HandBrake για βίντεο ή το LibreOffice για έγγραφα.