2010-07-17 13 views
25

Comparando 2 imágenes para ver si ambos son los mismos archivos son fáciles, arrojó los archivos MD5, pero ¿es posible o incluso plausible determinar si 2 imágenes son las mismas utilizando PHP GD para obtener la diferencia de las dos imágenes. Si pudiéramos obtener la diferencia de los dos, y todo fuera blanco (id asumir blanco o incluso negro), entonces sabríamos que es la misma foto.Compara 2 imágenes en php

Además, tenga en cuenta que le gustaría saber si es posible obtener 2 imágenes del mismo tamaño para crear un efecto de piel de cebolla, 50% de transparencia en 1 y 50% en el otro.

Respuesta

17

ImageMagick ofrece diversas herramientas que puede utilizar para esto, a través la extensión PHP ImageMagick.

http://www.php.net/manual/en/function.imagick-compareimages.php

El mayor problema es que la documentación para esa biblioteca es prácticamente inexistente, por lo que habrá un montón de prueba y error involucrados.

+0

* archivo no encontrado. * - si hace clic en el enlace –

9

libpuzzle es una extensión de PHP que puede comparar imágenes.

+0

que estaba buscando algo como esto, gracias! –

13
$md5image1 = md5(file_get_contents($image1)); 
$md5image2 = md5(file_get_contents($image2)); 
if ($md5image1 == $md5image2) { 

} 
+8

Por qué no utilizar md5_file()? – Jason

+5

Eso es realmente una comparación de archivos. No tanto comparar una imagen, cuál es la pregunta. @ Jason –

+0

¿por qué no ($ imagen1 imagen2 == $) – Peter

0

Si compara solo dos archivos, los datos hash y la comparación son la solución perfecta. Si está comparando una gran cantidad de archivos, mejor ordene primero según el tamaño y luego compare solo con el mismo tamaño.

3

Una pregunta similar fue hecha en este Stackoverflow thread y había desarrollado algo para mi propio uso. Publicarlo aquí para que pueda ayudar a otros.

Toma dos (o más imágenes) y le da opciones para verificar la diferencia entre ellas. Opciones como resolución para usar y rigor.

Escribí una más completa blogpost on it as well.

+0

Ese es un guión impresionante en realidad. –

0

que tuvo que deduplicar un conjunto de imágenes JPEG, donde la diferencia entre dos píxel a píxel imágenes idénticas era:

  • metadatos diferentes, por ejemplo, las imágenes tenían IFD0 diferente: ModifyDate
  • diferentes datos binarios, p.las imágenes se comprime sin pérdida por diferentes software

La solución que utilicé fue de la siguiente manera:

  • abrir la imagen con createimagefromjpeg función
  • guardar la imagen en formato GD2 usando imagegd2
  • comparar el GD2 versiones que utilizan juego de hash o cadena comparan