2010-09-05 3 views
6

Datenschutzbedenken haben mich dazu gebracht, zu glauben, dass ich vom Benutzer hochgeladene Bilder für irgendwelche Metadaten schrubben sollte.Welche Bildformate enthalten Metadaten und wie kann ich sie in PHP löschen?

Ich weiß, dass JPEG EXIF, aber ich bin nicht sicher über PNG oder GIF (beide können auf meiner Website von der Öffentlichkeit hochgeladen werden).

Haben diese Formate auch Metadaten und wie wird sie gespeichert? Was ist der beste Weg, um es zu entfernen?

Ich benutze PHP 5.29.

Dank

+1

versuchen. Viele Leute, sogar einige, die große Websites laufen, sind sich dessen nicht bewusst –

+0

@Pekka Danke :) – alex

Antwort

2

Der einfachste Weg ist es, sie in ein neues Bild mit GD zu kopieren - Sie behalten alle Bildinformationen, werden aber die Metadaten los. Dies ist eine große Frage

+1

+1 die gründlichste Lösung - bedenken Sie jedoch, dass Sie in den meisten Fällen zumindest leichten Bildverlust erleben werden. Die JPEG-Qualität von GD ist * schrecklich *. Verwenden Sie nach Möglichkeit ImageMagick. –

+0

Das ist gut, da alle meine öffentlichen Versionen der Bilder mit GD verkleinert wurden. Wenn GD die Metadaten standardmäßig löscht, bin ich klar :). – alex

0

beide haben Metadaten;)

+3

Pflege bitte um zu erarbeiten? – alex

0

Alle Bilder, die jede Art von Kompression verwenden enthalten Metadaten. Einige sind sehr bescheiden, während andere Formate Ihnen mehr erzählen, als Sie jemals brauchen würden.

+1

Nicht wirklich eine Antwort auf seine Frage IMO. Er fragt speziell nach datenschutzrelevanten Daten (Art der verwendeten Kamera, Ort, verwendete Software ...) –

3

können Sie http://www.php.net/manual/en/imagick.stripimage.php

$f = '16262403.jpg'; 
$i = new Imagick($f); 
$p = $i->getImageProperties(); 
var_dump($p); 
array(5) { 
    ["comment"]=> 
    string(20) "(C) Drom.ru #4495317" 
    ["date:create"]=> 
    string(25) "2012-05-29T17:15:32+03:00" 
    ["date:modify"]=> 
    string(25) "2012-05-29T17:15:30+03:00" 
    ["jpeg:colorspace"]=> 
    string(1) "2" 
    ["jpeg:sampling-factor"]=> 
    string(11) "2x2,1x1,1x1" 
} 

$i->stripImage(); 

$p = $i->getImageProperties(); 
var_dump($p); 
array(2) { 
    ["jpeg:colorspace"]=> 
    string(1) "2" 
    ["jpeg:sampling-factor"]=> 
    string(11) "2x2,1x1,1x1" 
}