Vad som faktiskt finns inuti ett foto

Öppna vilket foto som helst direkt från en telefon och bilden är bara en del av filen. Runt den finns ett block med metadata som kameran skrev i samma ögonblick: enhetens tillverkare och modell, objektivet, exponeringsinställningarna, den exakta sekunden då slutaren utlöstes, operativsystemversionen och — när platstjänster är aktiverade — latitud och longitud för var du stod, vanligtvis med en precision på några meter.

Inget av detta är synligt i bilden. Allt färdas med filen. Skicka fotot som en e-postbilaga, lägg det i en delad mapp, lägg upp en annons till försäljning med det, och vart och ett av dessa fält följer med.

Verktyget ovan läser av det blocket och visar det för dig innan det tar bort något, eftersom siffrorna är själva argumentet. ”Det här fotot innehåller EXIF-metadata” är abstrakt. Ett koordinatpar som leder direkt till din ytterdörr är det inte.

Rensa byten, koda inte om

Det finns två sätt att ta bort metadata från en bild, och bara ett av dem är rätt.

Det enkla sättet är att rita bilden på en HTML-canvas och spara den igen. Metadata försvinner eftersom en canvas aldrig bar på några. Det återkomprimerar också bilden — en andra omgång med förstörande JPEG-komprimering ovanpå kamerans — och kastar bort den inbäddade färgprofilen, så den ”rensade” filen blir mätbart sämre än originalet och färgerna har förskjutits. De flesta gratis metadatarensare fungerar på detta sätt, och det är anledningen till att filen du får tillbaka ofta har en annan storlek och är en något annorlunda bild.

Det här verktyget gör det andra. En JPEG är en sekvens av markörsegment; en PNG är en sekvens av segment; en WebP är en RIFF-container. Metadata finns i specifika, identifierbara segment i varje format — APPn-block i JPEG, eXIf-, tEXt-, iTXt-, zTXt- och tIME-segment i PNG, EXIF- och XMP-segment i WebP. Att ta bort dem handlar om att gå igenom filens egen struktur, hoppa över dessa block och kopiera allt annat oförändrat.

Den komprimerade bilden avkodas aldrig. Det betyder att bilddata i filen du laddar ner är bit för bit identiska med bilddata i filen du tillhandahöll — inte ”visuellt identiska”, inte ”hög kvalitet”, utan helt identiska. Den enda skillnaden mellan de två filerna är metadatan som togs bort.

Vad vi inte tar bort, och varför

Två saker behålls medvetet, och båda visas för dig med en kryssruta ifall du inte håller med.

Färgprofilen. En ICC-profil beskriver vilken färgrymd pixlarna är kodade i. Moderna telefoner fotograferar i ett brett färgomfång, och ett foto med brett färgomfång utan sin profil tolkas som vanlig sRGB och visas felaktigt — oftast urblekt, ibland övermättat. Profilen beskriver bilden, inte fotografen, så den behålls som standard.

Rotationsflaggan, när fotot behöver den. Telefoner roterar inte pixlarna när du vrider på kameran; de lagrar fotot så som sensorn såg det och skriver ett enskilt EXIF-nummer som talar om vilket håll som är uppåt. Tar du bort det numret visas den rena kopian i sidled i alla appar som respekterar det. När ett foto förlitar sig på det bygger detta verktyg upp ett minimalt block som innehåller det ena värdet och ingenting annat — ingen kamera, ingen tidsstämpel, ingen plats.

Vad detta innebär för dina andra foton

Att rensa en fil innan du skickar den löser delningshalvan av problemet. Det gör ingenting för fotona som fortfarande ligger i din kamerarulle, som behåller varje fält som det här verktyget just tog bort och kan läsas av allt som har åtkomst till enheten.

Det är den halvan Vaultine finns till för: ett krypterat valv där filer låses med AES-256-GCM på själva enheten, öppnas i en inbyggd visare snarare än att dekrypteras ut till disken, och låses upp med ett mönster eller en PIN-kod snarare än ett konto. Det är ett annat jobb än den här sidan — Vaultine lagrar filer, det redigerar inte deras metadata — men de är två sidor av samma instinkt. Foton du delar läcker var du har varit. Foton du sparar bör vara låsta.