COMPARER DEUX PICTUREBOX C#
Fermé
ninjago72
Messages postés
26
Date d'inscription
lundi 13 juin 2016
Statut
Membre
Dernière intervention
28 mai 2017
-
29 mars 2017 à 13:14
Utilisateur anonyme - 28 mai 2017 à 17:37
Utilisateur anonyme - 28 mai 2017 à 17:37
A voir également:
- COMPARER DEUX PICTUREBOX C#
- Deux ecran pc - Guide
- Faire deux colonnes sur word - Guide
- Itinéraire google map entre deux adresses - Guide
- Deux comptes whatsapp - Guide
- Concatener deux cellules excel - Guide
2 réponses
sensa6on
Messages postés
130
Date d'inscription
vendredi 19 octobre 2012
Statut
Membre
Dernière intervention
26 octobre 2018
78
18 avril 2017 à 16:48
18 avril 2017 à 16:48
Le problème avec l'instruction
Si jamais tu veux comparer deux images au pixel près et que tu n'utilises pas la même référence lors de l'affectation cela pourrait retourner
Dans ce cas tu peux utiliser une petite astuce qui consiste à mettre un tag à une image à chaque affectation, puis ensuite tu compares les tags.
pictureBox1.Image == pictureBox6.Imagec'est que tu compares des références vers des images.
Si jamais tu veux comparer deux images au pixel près et que tu n'utilises pas la même référence lors de l'affectation cela pourrait retourner
falsealors que les deux images sont identiques.
Dans ce cas tu peux utiliser une petite astuce qui consiste à mettre un tag à une image à chaque affectation, puis ensuite tu compares les tags.
pictureBox1.Image = "chemin vers mon image ou ressource";
pictureBox1.Image.Tag = "mon tag"; //exemple : "ciel"
pictureBox2.Image = "chemin vers mon image ou ressource";
pictureBox2.Image.Tag = "mon tag"; //exemple : "terre"
if (pictureBox1.Image.Tag == pictureBox2.Image.Tag)
{
...
}
Utilisateur anonyme
28 mai 2017 à 17:37
28 mai 2017 à 17:37
Bonjour
pour comparer de façon certaine deux images, au pixel près, il n'y a qu'une solution -> comparer tous les pixels: deux boucles for imbriquées et on regarde la couleur de chaque pixel, dès qu'il y a une paire différente l'image est différente. Cette méthode exclue très rapidement des images très différentes. C'est plus long s'il n'y a que quelques pixels qui diffèrent et si ceux-ci sont à la fin de tes boucles.
Une autre option est de faire un hachage de l'image (md5 par exemple par ce que l'outil existe dans la framework), tu transfères tes images en tableau de byte et tu fais le hachage, s'ils sont différents les images sont forcément différentes. Il peut y avoir un faux positif (on appelle ça une collision) mais c'est suffisamment rare (je l'ai testé à deux nombreuses reprises sur des images en niveau de gris ou il n'y a qu'un pixel différent d'un point sur 256) pour considérer que 2 hachages identiques viennent de 2 images identiques
pour comparer de façon certaine deux images, au pixel près, il n'y a qu'une solution -> comparer tous les pixels: deux boucles for imbriquées et on regarde la couleur de chaque pixel, dès qu'il y a une paire différente l'image est différente. Cette méthode exclue très rapidement des images très différentes. C'est plus long s'il n'y a que quelques pixels qui diffèrent et si ceux-ci sont à la fin de tes boucles.
Une autre option est de faire un hachage de l'image (md5 par exemple par ce que l'outil existe dans la framework), tu transfères tes images en tableau de byte et tu fais le hachage, s'ils sont différents les images sont forcément différentes. Il peut y avoir un faux positif (on appelle ça une collision) mais c'est suffisamment rare (je l'ai testé à deux nombreuses reprises sur des images en niveau de gris ou il n'y a qu'un pixel différent d'un point sur 256) pour considérer que 2 hachages identiques viennent de 2 images identiques
28 mai 2017 à 16:08
28 mai 2017 à 16:37
if (label4.Text == "Temps clair avec quelques nuages")
if (label7.Text == "lundi 8:00" || label7.Text == "lundi 9:00" //Je ne met pas tout les jours avec toutes les heures car il y en a beaucoup trop pour le mettre en message sur ce site
this.BackgroundImage = Properties.Resources.sunny;
else
pictureBox1.Image = Properties.Resources.lune;
pictureBox1.Image.Tag = "lune";
pictureBox24.Image = Properties.Resources.sunnyicon;
pictureBox24.Image.Tag = "sunny";
if (pictureBox1.Image.Tag == pictureBox24.Image.Tag)
{
MessageBox.Show("ok");
}
Mais le problème est qu'il me dit le message "ok" même quand les images sont différentes. Aurais-tu une autre solution ?