Cara kerja oCompress
Apa yang terjadi saat Anda menyeret file, cara memeriksa bahwa tidak ada yang diunggah, dan apa sebenarnya arti kompresi lossless dan lossy.
Versi singkatnya
Saat Anda membuka halaman alat, browser Anda mengunduh halaman tersebut beserta sebuah program kecil, yaitu kompresornya. Saat Anda menambahkan file, browser membacanya, kompresor memprosesnya di prosesor Anda sendiri, dan hasilnya diserahkan kembali kepada Anda sebagai unduhan. File tidak pernah dikirim lewat jaringan di tahap mana pun. Seluruh prosesnya seperti ini:
- Memuat. Halaman dan antarmuka alat dimuat lebih dulu. Mesin untuk suatu jenis file (gambar, video dan audio, atau dokumen) baru diambil saat Anda menambahkan file yang sesuai, jadi Anda tidak pernah mengunduh kode yang tidak dipakai.
- Membaca. Browser Anda memberi halaman akses hanya ke file yang Anda pilih, tidak ke hal lain di perangkat Anda.
- Mengompres. Pekerjaan berjalan di Web Worker, thread latar belakang browser, sehingga halaman tetap responsif dan Anda bisa membatalkan kapan saja.
- Menyimpan. File terkompresi dibuat di memori (video besar di penyimpanan privat browser) dan disimpan melalui unduhan biasa di browser Anda, satu per satu atau sebagai ZIP.
Apa yang berjalan di browser Anda
Browser modern bisa menjalankan kode terkompilasi dengan kecepatan mendekati aplikasi native melalui WebAssembly, dan memberi halaman web akses ke encoder video perangkat keras melalui antarmuka bernama WebCodecs. oCompress memakai keduanya:
- Gambar: MozJPEG untuk JPEG, OxiPNG dan kuantisasi palet untuk PNG, encoder WebP dari libwebp milik Google, libavif untuk AVIF, SVGO untuk SVG, serta dekoder dan encoder khusus untuk GIF dan TIFF. Codec JPEG, PNG, WebP, dan AVIF dikompilasi ke WebAssembly.
- Video dan audio: WebCodecs dengan pustaka Mediabunny untuk membaca dan menulis kontainer seperti MP4 dan WebM. Enkode memakai encoder perangkat keras di chip grafis Anda jika tersedia, karena itu prosesnya bisa cepat meski di browser. File MP3 ditulis oleh encoder LAME dan file FLAC oleh libFLAC, keduanya dikompilasi ke WebAssembly dan hanya dimuat saat diperlukan.
- Dokumen: kode kami sendiri yang dibangun di atas pustaka PDF dan ZIP open source membuka PDF dan file Office, mengompres ulang gambar di dalamnya dengan codec gambar, lalu menulis file baru.
Setiap pustaka yang kami sertakan bersifat open source: sebagian besar dengan lisensi permisif seperti MIT, BSD, dan Apache 2.0, Mediabunny dengan MPL 2.0, dan encoder MP3 LAME dengan LGPL sebagai file terpisah yang bisa diganti. Lihat daftar pustaka beserta versi dan lisensinya.
Cara memeriksa sendiri bahwa tidak ada yang diunggah
Anda tidak perlu hanya memercayai kata-kata kami. Ada dua uji sederhana:
- Putuskan koneksi. Buka halaman alat, kompres satu file agar mesinnya dimuat, lalu matikan Wi-Fi atau data seluler dan kompres file lain dengan jenis yang sama. Alat tetap berfungsi, karena tidak ada yang membutuhkan jaringan.
- Pantau jaringan. Di Chrome, Edge, atau Firefox, tekan F12, buka tab Network, lalu kompres sebuah file. Anda akan melihat kode kompresor dimuat dari situs kami, serta permintaan dari analitik dan iklan, tetapi tidak ada permintaan yang membawa file Anda. Foto 10 MB akan tampak sebagai unggahan 10 MB; tidak ada unggahan seperti itu.
Halaman ini memang mengirim peristiwa penggunaan anonim ke Google Analytics, misalnya "sebuah JPG berukuran beberapa megabyte telah dikompres". Peristiwa ini berisi alat yang dipakai, jenis file, serta ukuran, penghematan, dan waktu pemrosesan dalam rentang kasar, tidak pernah nama file atau isinya.
Kompresi lossless: isi sama, byte lebih sedikit
Kompresi lossless mencari redundansi, yaitu hal-hal yang disimpan lebih dari sekali atau yang bisa diprediksi, lalu menuliskannya dengan lebih ringkas. Dekode membalikkan proses itu dengan persis. Tiga gagasan muncul di hampir setiap format lossless:
- Prediksi. Piksel yang bersebelahan dalam gambar atau sampel yang berurutan dalam audio biasanya mirip. Menyimpan selisih kecil dari sebuah prediksi, bukan nilai penuhnya, menyisakan angka yang sebagian besar mendekati nol. Filter PNG dan prediktor linear FLAC bekerja dengan cara ini.
- Pengulangan. Urutan yang berulang diganti dengan rujukan singkat ke salinan sebelumnya. Inilah bagian LZ77 dari DEFLATE, yang dipakai di ZIP, PNG, dan file Office.
- Pengodean entropi. Nilai yang sering muncul mendapat kode pendek dan nilai yang jarang mendapat kode panjang (pengodean Huffman atau aritmetika).
Kompresi lossless punya batas alami: noise acak tidak bisa diprediksi, jadi foto yang berbutir atau rekaman yang bising tidak pernah menyusut banyak tanpa kehilangan kualitas. Ini juga alasan mengompres file yang sudah terkompresi, seperti JPEG di dalam ZIP, hampir tidak menghemat apa pun.
Kompresi lossy: membuang yang tidak akan Anda rindukan
Codec lossy melangkah lebih jauh dengan membuang informasi yang nyaris tidak tertangkap mata dan telinga manusia. JPEG dan WebP menyimpan warna dengan resolusi lebih rendah daripada kecerahan dan membuang detail halus berfrekuensi tinggi. MP3, AAC, dan Opus membuang suara yang tertutup suara lebih keras. Codec video seperti H.264 sesekali menyimpan satu gambar penuh, dan di antaranya sebagian besar hanya gerakan dan perubahan.
Pengaturan kualitas atau bitrate menentukan seberapa banyak yang dibuang. Pada pengaturan sedang, kehilangannya sangat sulit disadari; jika terlalu jauh, muncul artefak yang khas: kotak-kotak dan lingkaran cahaya pada gambar, suara seperti logam atau di dalam air pada audio, dan gambar yang meleber pada adegan video yang cepat.
Apa yang dijanjikan alat ini dan apa yang tidak
- Anda tidak pernah mendapat file yang lebih besar. Jika hasilnya tidak lebih kecil, alat ini mengembalikan file asli dan memberi tahu bahwa file sudah optimal.
- Dokumen dan file audio menghasilkan byte yang identik untuk file dan pengaturan yang sama; encoder video perangkat keras bisa berbeda beberapa byte antarproses.
- Teks dalam dokumen tetap berupa teks; halaman tidak pernah diubah menjadi gambar.
- Metadata gambar seperti lokasi GPS dihapus secara bawaan, sedangkan profil warna dan orientasi dipertahankan. Metadata video seperti lokasi, perangkat, dan tanggal juga dihapus secara bawaan; audio mempertahankan tag dan sampulnya kecuali Anda menonaktifkannya.
Yang tidak bisa kami janjikan adalah persentase tertentu. Penghematannya sepenuhnya bergantung pada cara file dibuat: foto ponsel atau PDF hasil pindaian biasanya punya banyak ruang, file yang sudah dioptimalkan hanya punya sedikit. Alat ini menampilkan ukuran sebelum dan sesudah yang persis untuk setiap file.
Batasan kompresi di browser
Tab browser adalah sandbox dengan memori terbatas, dan itulah yang menentukan batas apa yang praktis. Alat ini menerima gambar hingga 200 MB dan 100 megapiksel, file PDF dan Office hingga 300 MB, serta video dan audio hingga 4 GB di komputer (1 GB di ponsel), meski video 4K yang panjang mungkin tetap tidak muat di memori satu tab. Kecepatannya bergantung pada perangkat keras Anda: dalam pengujian kami di PC Windows yang cepat dengan Chrome, satu menit video 1080p memakan waktu sekitar 20 detik dan foto 24 megapiksel sekitar 2,5 detik; ponsel bisa jauh lebih lambat. Video dan sebagian besar konversi audio memerlukan WebCodecs, yang tersedia di Chrome, Edge, dan Opera versi terbaru, Firefox 130+, dan Safari 26+; WAV dan AIFF bisa diubah menjadi MP3, FLAC, atau WAV bahkan tanpa WebCodecs.
Beberapa format sama sekali tidak punya dekoder di browser, seperti WMA, AVI, dan WMV, dan file Office biner lama tidak bisa ditulis ulang dengan aman. Untuk format seperti ini, alat ini menjelaskan pilihan yang ada alih-alih menghasilkan file yang mungkin rusak. Jika pekerjaannya terlalu besar untuk browser, program desktop seperti HandBrake untuk video atau LibreOffice untuk dokumen adalah rekomendasi yang jujur.