Blog / Teknik

Mengapa file hasil restorasi bisa lebih besar dari pindaian

· laporan pengukuran · data: perbandingan encoder produksi

Tulisan ini bermula dari pengamatan seorang pengguna: unduhan hasil restorasi lebih besar daripada foto yang mereka unggah, yang secara intuitif terasa salah untuk sebuah “perbaikan”. Pengukuran menemukan dua penyebab yang saling independen: yang satu adalah produk bekerja sebagaimana mestinya, yang lain adalah pemborosan sungguhan yang kemudian kami hilangkan.

Penyebab 1: output memang memuat ~6× piksel

Restorasi mencakup peningkatan seluruh gambar: pindaian 821×1024 yang umum (0,84 megapiksel) kembali pada 2052×2560 (5,25 megapiksel), 6,25× jumlah piksel, dengan detail yang benar-benar disintesis di piksel-piksel itu, bukan salinan yang diregangkan. Lebih banyak informasi, lebih banyak byte. Bagian ini adalah fiturnya.

8211024
Unggahan0,84 MP
20522560
Output hasil restorasi5,25 MP
Gambar 1. Input dan output dari restorasi yang sama, digambar sesuai skala. Output memuat 6,25× piksel unggahan.

Penyebab 2: encoder PNG browser 20–40% lebih boros

Bagian yang boros: aplikasi ini semula mengenkode unduhan di browser dengan encoder PNG bawaan API kanvas. Dibandingkan dengan encoder pengoptimal yang layak pada pengaturan lossless maksimum, encoder kanvas menghasilkan file 20–40% lebih besar untuk output yang pikselnya identik. PNG bersifat lossless dalam kedua kasus; byte ekstranya tidak membeli apa pun.

Gambar 2. Piksel hasil restorasi yang sama, dienkode dengan dua cara. Enkode kompresi maksimum dengan pemfilteran adaptif memangkas file 45% tanpa perbedaan kualitas; PNG bersifat lossless dalam kedua kasus.

Server kini mengenkode PNG hasil sekali pada kompresi lossless maksimum, dan klien memakai ulang byte yang persis sama untuk unduhan alih-alih mengenkode ulang lewat kanvas. Pemakaian ulang ini benar secara konstruksi: blob yang diunduh adalah blob yang sama yang dilukiskan ke kanvas, sehingga pikselnya tidak mungkin berbeda.

Yang sengaja tidak kami lakukan

Kami tidak menambahkan format output lossy demi mengejar angka yang lebih kecil. Restorasi adalah salinan arsip, jadi tombol unduh memberimu PNG dan tidak ada yang lain; tidak ada lagi keuntungan lossless gratis yang bisa dipetik dari JPEG atau WebP. Dan foto yang diproses dalam mode fallback di perangkat tetap memakai encoder browser; run semacam itu tidak pernah menyentuh server kami sama sekali.

Pelajaran praktis

Jika file hasil restorasimu lebih besar daripada pindaianmu, periksa dimensi pikselnya sebelum menganggapnya pemborosan: pada 6× piksel, file yang agak lebih besar adalah hasil yang diharapkan, dan file yang lebih kecil justru berarti ada detail yang dibuang.