2010-09-05 13 views
6

Obawy o prywatność doprowadziły mnie do wniosku, że powinienem wyczyścić przesłane przez użytkownika obrazy dla dowolnych metadanych.Jakie formaty obrazów zawierają metadane i jak mogę je wyczyścić w PHP?

Wiem, że JPEG ma EXIF, ale nie jestem pewien PNG lub GIF (oba są w stanie być przesłane do mojej strony od publiczności).

Czy te formaty zawierają również metadane i w jaki sposób są przechowywane? Jaki jest najlepszy sposób, aby go usunąć?

Używam PHP 5.29.

Dzięki

+1

To jest wielkie pytanie. Wiele osób, nawet niektóre z dużymi serwisami, nie są tego świadome. –

+0

@Pekka Dziękuję :) – alex

Odpowiedz

2

Najprostszym sposobem jest skopiowanie ich do nowego obrazu z GD - zachowujesz wszystkie informacje o obrazie, ale pozbywasz się metadanych.

+1

+1 najdokładniejsze rozwiązanie - należy pamiętać, że w większości przypadków wystąpi choćby niewielka utrata obrazu. Jakość JPEG GD jest * okropna *. Jeśli to możliwe, użyj ImageMagick. –

+0

To dobrze, ponieważ wszystkie moje publiczne wersje zdjęć * zostały * pomniejszone o GD. Jeśli GD domyślnie odrzuci dane meta, nie mam żadnych wątpliwości :). – alex

0

oba mają metadanych;)

+3

Chcesz się dowiedzieć? – alex

0

Wszystkie obrazy, które używają jakiejkolwiek kompresji zawierają metadane. Niektóre z nich są bardzo skromne, podczas gdy inne formaty mówią więcej niż kiedykolwiek będziesz potrzebować.

+1

Naprawdę nie jest to odpowiedź na jego pytanie IMO. Pyta on w szczególności o dane dotyczące prywatności (Rodzaj używanej kamery, lokalizacja, używane oprogramowanie ...) –

3

Możesz spróbować 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" 
} 
Powiązane problemy