2010-09-05 13 views
6

Las preocupaciones sobre la privacidad me han llevado a pensar que debería eliminar las imágenes cargadas por el usuario para cualquier metadato.¿Qué formatos de imagen contienen metadatos y cómo puedo borrarlos en PHP?

Sé que JPEG tiene EXIF, pero no estoy seguro acerca de PNG o GIF (ambos pueden ser cargados en mi sitio por el público).

¿Estos formatos también tienen metadatos y cómo se almacenan? ¿Cuál es la mejor manera de eliminarlo?

Estoy usando PHP 5.29.

Gracias

+1

Esta es una gran pregunta. Muchas personas, incluso algunas que operan en sitios grandes, no están al tanto de esto –

+0

@Pekka Gracias :) – alex

Respuesta

2

La manera más fácil es copiarlos en una nueva imagen con GD: conserva toda la información de la imagen, pero elimine los metadatos.

+1

+1 la solución más completa: recuerde que en la mayoría de los casos tendrá una pérdida de imagen mínima. La calidad JPEG de GD es * horrible *. Si es posible, use ImageMagick. –

+0

Esto es bueno, ya que todas mis versiones públicas de las imágenes * han * sido reducidas con GD. Si GD descarta los metadatos por defecto, estoy en claro :). – alex

0

ambos tienen metadatos;)

+3

¿Cuidar para elaborar por favor? – alex

0

Todas las imágenes que utilizan cualquier tipo de compresión contienen metadatos. Algunos son muy modestos, mientras que otros formatos te dicen más de lo que nunca necesitarías.

+1

Realmente no es una respuesta a su pregunta IMO. Específicamente pregunta sobre datos relevantes para la privacidad (tipo de cámara utilizada, ubicación, software utilizado ...) –

3

Puede intentar 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" 
} 
Cuestiones relacionadas