web-dev-qa-db-fra.com

Comparer 2 images en php

Comparer 2 images pour voir si les deux fichiers sont identiques est facile, ont jeté les fichiers MD5, mais est-il possible, voire plausible, de déterminer si 2 images sont identiques en utilisant PHP Gd pour obtenir la différence entre les deux images . Si nous obtenions la différence entre les deux et que tout était blanc (je suppose en blanc ou même en noir), nous saurions maintenant que la photo est identique.

Aussi, remarque: je voudrais savoir s'il est possible d'obtenir 2 images de taille égale pour créer un effet de pelure d'oignon, 50% de transparence sur 1 et 50% sur l'autre.

25
Joseph

ImageMagick propose différents outils que vous pouvez utiliser à cet effet, via l'extension PHP ImageMagick.

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

Le plus gros problème est que la documentation de cette bibliothèque est quasiment inexistante, ce qui implique beaucoup d'essais et d'erreurs.

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

}
13
Hamada Mido

libpuzzle est une extension PHP qui peut comparer des images.

9
pfrenssen

Une question similaire a été posée sur ceci fil de Stackoverflow et j'avais développé quelque chose pour mon propre usage. Affichez-le ici pour que cela puisse aider les autres.

Il en faut deux (ou plus) et vous offre des options pour vérifier la différence entre elles. Des options telles que la résolution à utiliser et la rigueur.

J'ai écrit un plus complet blogpost dessus aussi.

3
Pat Cullen

Fonction de comparaison d'images dans PHP avec Gd Library http://www.robert-lerner.com/imagecompare.php

3
TechNikh

Je devais dédupliquer un ensemble d'images JPEG dans lesquelles la différence entre deux images identiques pixel par pixel était la suivante:

  • différentes métadonnées, par exemple les images avaient différentes IFD0: ModifyDate
  • différentes données binaires, par ex. les images ont été compressées sans perte par différents logiciels

La solution que j'ai utilisée était la suivante:

  • ouvrez l'image en utilisant createimagefromjpeg function
  • enregistrer l'image au format Gd2 à l'aide de imagegd2
  • comparer les versions de Gd2 en utilisant une correspondance de hachage ou une comparaison de chaîne
0
Salman A

Vous n'êtes pas sûr que ce soit si simple et qu'une solution existe, mais vous aurez probablement une idée de la détection d'image à partir de:

Détection de visage avec PHP
Filtre de nudité des images (Classe)

0
Sarfraz

Si vous ne comparez que deux fichiers, le hachage des données et la comparaison constituent la solution idéale. Si vous comparez un grand nombre de fichiers, triez-les d'abord en fonction de leur taille, puis comparez-les uniquement avec la même taille.

0
mrd081