IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comparer deux images


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut Comparer deux images
    Salut,

    J'ai besoin de comparer des images. Le but étant de déterminer si deux images sont identiques ou non.

    Je suis entrain de jouer avec l'API de image magick mais je voulais savoir s'il y a d'autres possibilités.

    Avec image magick j'ai une erreur que je sais pas comment corriger. Voila mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $arr = array('bikini.jpg', 'dominican.jpg', 'swedish.jpg', 'robe.jpg');
    for($i=0; $i<count($arr); $i++){
        $filename = $arr[$i];
        echo $filename . ": " . filesize($filename) . " bytes\n";
    }
     
    $image1 = new imagick("bikini.jpg");
    $image2 = new imagick("robe.jpg");
     
    $result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
    var_dump($result);
    ?>
    l'erreur retournée:

    PHP Fatal error: Uncaught exception 'ImagickException' with message 'Compare images failed' in /home/me/cmpimages/index.php:11
    Stack trace:
    #0 /home/me/cmpimages/index.php(11): Imagick->compareimages(Object(Imagick), 4)
    #1 {main}
    thrown in /home/me/cmpimages/index.php on line 11


    Merci

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    J'utiliserais plutôt un md5 via md5_file.

    Si les 2 md5 sont équivalent c'est que les deux images son strictement identiques. Bien plus rapide qu'une comparaison pixel à pixel

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut
    Merci grunk

    Je venais d'ajouter mon code qui utilise image magick.

    Je vais tester ta solution.

    Merci

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut
    Salut,

    Je viens de tester avec un exemple de quelques images identiques enregistrée sous des noms différents, et j'ai comparé les images identiques et les images différentes. Ca donne les résultats attendus. Vu que je n'ai pas besoin d'un algorithme sophistiqué de reconnaissance des images (qui reconnaitrait les différences de contrastes, luminosité, ...). Ca répond parfaitement à mes besoins.

    Merci encore une fois

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut
    Salut

    Est ce qu'il y a une autre fonction plus rapide. Ou bien c'est la meilleur pour la comparaison de deux fichiers images?

    Et si vous avez le choix entre appliquer la fonction à une image distante et télécharger cette image et appliquer la fonction à l'image téléchargée en local, lequel des deux choix est meilleur à votre avis?

    Merci

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Je pense pas que tu puisse trouver plus rapide pour comparer deux fichiers.

    Pour ce qui est de l'image distante , je ferais un script sur le serveur distant qui renvoi le md5 du fichier qu'on lui passe en paramètre.
    ainsi pas besoin de traansférer l'image , les seules données échangée son le nom du fichier puis son md5 en réponse

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut
    En fait j'ai pas accès au serveur distant. Ma question était est ce que ca serait mieux de télécharger l'image qui se trouve sur un autre serveur auquel j'ai pas accès à la machine ou le code s'exécute ou de passer l'url de l'image comme paramètre de la fonction (parce que maintenant elle accepte une url comme paramètre). J'ai fait quelques tests, et j'ai trouvé que la fonction est bien rapide quand on lui passe l'url du fichier en paramètre. Je crois que théoriquement cela est justifié par l'économie du temps qui serai nécessaire à l'écriture sur le disque dur.

    Donc merci beaucoup. La fonction que vous m'avez donné répond parfaitement à mes besoins. Je vais mettre la discussion à résolue. Bien entendu, je serai ravi d'avoir d'autres remarques ou suggestions.

    Merci encore une fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparer deux images (100% identiques ou non)
    Par FluidBlow dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/04/2008, 13h40
  2. Comparer deux images
    Par GwenZephyr dans le forum Windows Forms
    Réponses: 6
    Dernier message: 04/03/2008, 16h09
  3. comparer deux images en vbnet
    Par offspring dans le forum VB.NET
    Réponses: 9
    Dernier message: 06/11/2007, 14h13
  4. comparer deux images
    Par alex01pernot dans le forum Delphi
    Réponses: 4
    Dernier message: 03/04/2007, 16h08
  5. Comparer deux images pas directement superposables
    Par Byhias dans le forum Images
    Réponses: 2
    Dernier message: 12/03/2007, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo