Cara pembuangan EXIF berfungsi
Fail JPEG ialah jujukan segmen bertag yang dipanggil penanda APP, bermula sejurus selepas tandatangan SOI dua bait (0xFFD8). Data EXIF berada dalam APP1, GPS berada dalam blok APP1 yang sama sebagai sub-IFD, dan IPTC berada dalam APP13. Pembuang melalui setiap penanda, mengenal pasti yang membawa metadata, membuangnya, dan memasang semula muatan selebihnya menjadi JPEG yang sah.
- Hurai penanda APP. Alat membaca ArrayBuffer mentah dan melalui jujukan penanda JFIF bait demi bait. Setiap tag penanda dua bait mengenal pasti jenis segmen: APP0 (pengepala JFIF), APP1 (EXIF dan XMP), APP13 (Photoshop dan IPTC), dan seterusnya hingga APP15. Penghurai merekod offset dan panjang bait setiap segmen dalam jadual kecil sebelum menyentuh apa-apa, supaya penimbal asal kekal utuh dalam memori.
- Nyahkodkan tag EXIF. Muatan APP1 ialah struktur TIFF mini dengan empat Direktori Fail Imej: IFD ke-0 (atribut imej utama), Exif SubIFD (pendedahan, kanta, panjang fokus, ISO), GPS IFD (latitud, longitud, altitud, arah), dan IFD ke-1 (lakaran kecil terbenam). Setiap tag membawa kod berangka, jenis data (bait, pendek, panjang, rasional, rentetan ASCII), dan nilai. Alat memetakan kod berangka kepada nama yang boleh dibaca manusia menggunakan kamus tag piexifjs, kemudian merender mereka dalam panel metadata dikelompokkan mengikut IFD.
- Tandakan tag GPS. Sebarang tag dalam GPS IFD diserlahkan dengan lencana privasi merah. Latitud dan longitud disimpan sebagai tiga nombor rasional (darjah, minit, saat) ditambah arah rujukan (U atau S, T atau B). Alat menukarnya kepada darjah perpuluhan bertanda dengan enam digit ketepatan (~11 cm di khatulistiwa) dan menunjukkan hasilnya dalam panel GPS bersama pautan OpenStreetMap. Tiada permintaan jubin dihantar — pautan dijana secara setempat dan hanya dibuka jika anda mengkliknya.
- Buang metadata. Untuk fail JPEG, laluan lalai menggunakan piexifjs untuk membuang segmen APP1 sepenuhnya, mengembalikan dataURL baharu dengan data piksel tidak disentuh. Apabila "Kekalkan orientasi" dihidupkan, alat memutar imej pada
<canvas>untuk memadankan nilai tagOrientationasal (1–8) sebelum membuang, supaya hasil visual sepadan dengan apa yang dimaksudkan oleh kamera anda — putaran dibakar ke dalam piksel dan bukannya bergantung pada bendera metadata. - Laluan pengekodan semula canvas. Apabila "Kekalkan profil warna ICC" dimatikan, alat melukis imej ke
<canvas>tersembunyi dan memanggilcanvas.toBlob('image/jpeg', quality). Laluan ini membuang segala-galanya (EXIF, XMP, IPTC, profil ICC, lakaran kecil) dan membolehkan anda mengawal peluncur kualiti JPEG dari 60 hingga 100. Lalainya ialah 92, yang menghasilkan fail dalam beberapa peratus daripada saiz asal pada kualiti yang tidak dapat dibezakan daripada sumber pada kebanyakan foto. - Muat turun fail yang bersih. Blob yang dibersihkan ditawarkan sebagai muat turun bernama
<nama-asal>-stripped.jpg. Alat menghurai semula hasilnya dan mengesahkan bahagian GPS EXIF adalah kosong sebelum pautan muat turun muncul, supaya anda tidak pernah mendapat fail berlabel "dibuang" yang masih membawa tag lokasi. Fail PNG dan WebP tidak membawa EXIF pada mulanya; alat menunjukkan mesej "Tiada EXIF" dan melangkau langkah pembuangan untuk format tersebut.
Mengapa buang EXIF sebelum berkongsi
- Privasi lokasi. Telefon pintar membenamkan koordinat GPS tepat dalam setiap foto secara lalai. JPEG dari restoran, pejabat, atau rumah membawa alamat itu dalam metadata pada ketepatan kira-kira lima meter. Buang tag GPS sebelum menyiarkan ke media sosial, menghantar e-mel kepada orang asing, atau melampirkan tangkap layar kepada tiket sokongan awam dan anda membuang cap jari lokasi itu sepenuhnya.
- Tanpa nama dalam penerbitan. Wartawan, aktivis, dan pemberi maklumat membuang EXIF sebelum mengemukakan foto kerana nombor siri kamera, versi perisian tegar kanta, dan cap masa penciptaan semuanya boleh dirujuk silang dengan imej lain yang diterbitkan untuk mengenal pasti jurufoto. Membuang tag tersebut adalah langkah keselamatan operasi asas untuk sesiapa yang nama pena tidak sepatutnya dikaitkan dengan peranti fizikal tertentu.
- Saiz fail yang lebih kecil. JPEG telefon pintar yang tipikal membawa 5 hingga 15 KB metadata dalam segmen APP1, termasuk lakaran kecil terbenam 160 × 120. Itu kecil berbanding foto 5 MB, tetapi membuangnya merentas kumpulan 1,000 imej produk menjimatkan 5 hingga 15 MB setiap pusingan muat naik — berguna apabila anda memangkas katalog produk, pustaka foto stok, atau eksport Pinterest.
- Buang cap jari kamera. Jenama kamera, model, versi perisian tegar, pengecam kanta, dan kiraan aktuasi pengatup membentuk cap jari yang boleh menghubungkan foto merentas muat naik berasingan walaupun EXIF sebaliknya biasa. Jika anda berkongsi imej tanpa mendedahkan perkakasan anda (laporan pepijat, penyerahan pertandingan, portfolio tanpa nama), Exif SubIFD adalah tempat maklumat pengenalan itu berada. Buang dan pautan diputuskan.
Aplikasi biasa
Pembuangan EXIF muncul bila-bila masa foto berpindah tangan dan metadata yang dibawanya boleh menyebabkan masalah kepada pengirim atau subjek.
- Muat naik media sosial: kebanyakan platform membuang EXIF di bahagian pelayan, tetapi membuang di bahagian klien dahulu bermakna koordinat asal tidak pernah dihantar ke pelayan platform sama sekali. Jika saluran paip mereka bocor (atau mendapat saman), GPS asal tidak ada dalam log mereka kerana ia tidak pernah dihantar.
- Kewartawanan dan fotografi dokumentari: perkhidmatan wayar dan meja foto memerlukan metadata yang bersih supaya atribusi nama pena dan data kapsyen dikawal oleh meja, bukan kamera. Penyunting foto di agensi berita terkemuka semuanya menjalankan imej yang masuk melalui langkah gosok metadata sebelum ia menghit wayar.
- Penyenaraian hartanah dan produk: ejen hartanah dan penjual e-dagang secara rutin memuat naik foto yang diambil di alamat hartanah atau gudang. Membuang GPS sebelum muat naik menghalang penyenaraian daripada tidak sengaja menerbitkan alamat perniagaan tepat dalam fail — berguna apabila gudang itu adalah kediaman peribadi atau hartanah masih dihuni.
Contoh yang dikerjakan
JPEG 3.5 MB yang diambil dengan iPhone terkini membawa kira-kira 12 KB metadata APP1: koordinat GPS dengan bearing dan altitud, cap masa tangkapan sehingga milisaat, model kamera dan pengecam kanta, tetapan imbangan putih, dan lakaran kecil terbenam 160 × 120. Selepas membuang dengan laluan piexif lalai, fail menjadi 3.488 MB. Itu 12 KB lebih ringan, sama piksel dengan asal, dan bebas dari ping lokasi. Panel GPS di atas akan menunjukkan koordinat mana yang dibuang sebelum anda memuat turun.
Apakah metadata EXIF?
EXIF (Exchangeable Image File Format) ialah piawaian yang mentakrifkan cara kamera digital dan telefon pintar menyimpan metadata dalam fail imej. JPEG telefon pintar yang tipikal membawa jenama dan model kamera, panjang fokus kanta, kelajuan pengatup, ISO, lokasi GPS tepat (sehingga beberapa meter), cap masa penciptaan, dan lakaran kecil terbenam kecil — semua tidak kelihatan dalam imej yang dirender itu sendiri tetapi boleh dibaca oleh mana-mana aplikasi sedar EXIF, termasuk pelayar fail OS dan kebanyakan alat penyuntingan foto.
Mengapa saya harus membuang EXIF sebelum berkongsi foto?
Tag GPS mendedahkan tempat foto diambil, sehingga beberapa meter. Berkongsi foto tanpa membuangnya bermakna anda berkongsi lokasi itu dengan semua orang yang menerima fail. Nombor siri kamera dan pengecam kanta juga boleh mengecap cap jari jurufoto merentas muat naik berasingan, yang penting bagi sesiapa yang menerbitkan secara pseudonim. Pembuangan membuang semua ini sebelum fail meninggalkan peranti anda.
Adakah ini menjejaskan kualiti imej?
Laluan piexif lalai membuang segmen APP1 tanpa menyentuh piksel imej, jadi kualiti adalah sama bait dengan asal. Laluan pengekodan semula canvas (digunakan apabila "Kekalkan profil warna ICC" dimatikan, atau apabila "Kekalkan orientasi" dihidupkan untuk imej yang diputar) mengekodkan semula piksel pada nilai peluncur kualiti JPEG yang dipilih — tetapkan peluncur kepada 95 atau lebih tinggi untuk mengekalkan hasil yang kelihatan dekat dengan sumber pada kebanyakan foto.
Bagaimana pula dengan fail HEIC dari iPhone?
Pembuangan HEIC bergantung pada sokongan HEIC asli pelayar anda. Safari 13+ menyahkodkan HEIC secara asli; Chrome dan Firefox tidak. Jika pelayar anda tidak dapat memaparkan HEIC, gunakan pilihan "Eksport sebagai JPEG" pada telefon anda dahulu (dalam iOS Photos: Kongsi → Pilihan → Paling Serasi), kemudian muat naik JPEG di sini. Langkah pembuangan pada fail yang ditukar berfungsi sama seperti mana-mana JPEG lain.
Setiap pembuangan berjalan secara setempat di pelayar anda. Foto asal tidak pernah sampai ke mana-mana pelayan, dan fail yang dibersihkan dihasilkan sepenuhnya daripada ArrayBuffer yang dimuatkan ke dalam memori pada masa muat naik. Lepaskan foto di atas, periksa metadata, dan muat turun salinan yang dibuang.