2010-07-17 22 views
25

Confrontando 2 immagini per vedere se sono entrambi gli stessi file sono facili, ha gettato i file MD5, ma è possibile o addirittura plausibile determinare se 2 immagini sono le stesse usando PHP GD per ottenere la differenza delle due immagini. Se dovessimo ottenere la differenza tra i due, ed era tutto bianco (l'id assumerebbe bianco o addirittura nero), allora sapremmo che è la stessa foto?Confronta 2 immagini in php

Nota a margine: id come sapere se è possibile ottenere 2 immagini di uguali dimensioni per creare un effetto buccia di cipolla, 50% di trasparenza su 1 e 50% sull'altro.

risposta

17

ImageMagick offre diversi strumenti che è possibile utilizzare per questo, attraverso l'estensione PHP ImageMagick.

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

Il problema più grande è che la documentazione per tale libreria è praticamente inesistente, quindi ci saranno un sacco di tentativi ed errori coinvolti.

+0

* File non trovato. * - se si fa clic sul collegamento –

9

libpuzzle è un'estensione PHP che può confrontare le immagini.

+0

Stavo cercando qualcosa di simile, grazie! –

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

} 
+8

Perché non usare semplicemente md5_file()? – Jason

+5

Questo è davvero un confronto di file. Non tanto un'immagine confronta quale è quale sia la domanda. –

+0

@Jason perché non solo ($ image1 == $ image2) – Peter

0

Se si confrontano solo due file, i dati di hashing e il confronto sono la soluzione perfetta. Se stai confrontando un numero elevato di file, meglio ordinarli in base alle dimensioni e confrontare solo con le stesse dimensioni.

3

Una domanda simile è stato chiesto su questo Stackoverflow thread e mi aveva sviluppato qualcosa per il mio uso. Pubblicalo qui in modo che possa aiutare gli altri.

Sono necessarie due (o più immagini) e vengono fornite le opzioni per verificare la differenza tra di esse. Opzioni come risoluzione da usare e rigore.

Ho scritto un più completo blogpost on it as well.

+0

Questo è uno script davvero impressionante. –

0

ho dovuto deduplicare una serie di immagini JPEG cui la differenza tra due pixel-per-pixel immagini identiche era:

  • diverso metadati esempio le immagini avevano IFD0 differente: ModifyDate
  • dati binari diversi, ad es.le immagini sono state senza perdita di qualità compressi da un software diverso

La soluzione che ho usato è stato il seguente:

  • aprire l'immagine utilizzando createimagefromjpeg funzione
  • salvare l'immagine in formato GD2 utilizzando imagegd2
  • confrontare la GD2 versioni che utilizzano la corrispondenza dell'hash o la stringa compare
Problemi correlati