Services : Blog Forum Flux
Formation Trafic : Référencement Liens sponsorisés Affiliation Ecommerce Nom de domaine E-réputation Marketing Mobile Black Hat Outils Referencement
Formation Technique : Performance Web Html Css Sql Curl Asp Dotnet Php Ajax Wordpress Twitter Google Analytics

Forum Oseox
Oseox

Comment recupérer la valeur du code couleur d'un area

Forum Référencement et Trafic
Nous sommes le Jeu 24 Mai 2018 15:01

Heures au format UTC [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet Aller à la page 1, 2  Suivante
Auteur Message
MessagePosté: Dim 5 Avr 2009 16:03 
Avatar de l’utilisateur
Voilà mon petit souci,

Dans une page HTML, sur une image j'ai des balises de type <area shape="poly" coords="...">. Ces zones, de type polygone, sont remplies uniformément d'une couleur verte ou d'une couleur rouge.

Problème : Récupérer la valeur de la couleur de la zone area.
Difficulté : Je pense utiliser la fonction imagecolorat() de PHP pour récupérer l'index de la couleur du pixel situé aux coordonnées (x , y ) de la zone area. Mais la zone définie n'étant pas un rectangle (je ne ne peux donc pas calculer son centre (x , y ) j'ai des difficultés pour avoir le code couleur de cette zone a coup sur.

Auriez vous une petite idée pour récupérer, sans erreur, la valeur de la couleur de remplissage d'un polygone ?
(Rem : je code en PHP)


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 17:01 
Administrateur
Avatar de l’utilisateur
Bonjour,

Est ce qu'une solution qui récupère tout le contenu de ta page (file_get_content) puis de la parser avec une expression régulière te conviendrait ?


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 17:43 
Avatar de l’utilisateur
Aurelien, Merci de ton aide :D

Voici ma méthode :
J'ai une page HTML avec une image sur laquelle est définie des zones area (des polygones).
1) je charge la page HTML (DOMDocument::loadHTMLFile)
2) je charge l'image de la page HTML (imagecreatefromgif)
3) Dans la page HTML chargée, je recherche tous les zones area (getElementsByTagName('area')) et je récupère les coordonnées du polygone (getAttribute('coords')) correspondants.

Et maintenant que j'ai les coordonnées de chaque polygone il faut que je détermine la couleur de remplissage de chaque polygone dans l'image (soit en vert, soit en rouge).

Et c'est là que je coince :oops: Comment être sur de trouver un point dans le polygone pour récupérer la couleur (imagecolorat(img,$x,$y)) ?


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 17:53 
Professionnel
Professionnel
Avatar de l’utilisateur
Hello,

Si tes polygones sont uniformes niveau couleur ce qui semble être le cas en te lisant, tu n'as rien à récupérer, ou plutôt tu l'as déjà puisqu'un seul point du polygone suffit. Récupérer son centre (complexe problème, tu parles de gravité ? :D ) n'a aucun intérêt.

Ou alors je t'ai mal compris :)


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 18:59 
Avatar de l’utilisateur
Voici la méthode que l'on m' a indiqué sur PHPfrance (merci à orgerix) ;)

Soit un polygone décrit selon une liste de points :
Code:
<area alt="Alerte2" shape="poly" coords="505,74,500,79,450,70,450,43,470,38,485,59,494,58,499,62,497,67,504,74" </area>

La liste de points étant un couple de coordonnées (X,Y) nous avons alors
Code:
(505,74),(500,79),(450,70),(450,43),(470,38),(485,59),(494,58),(499,62),(497,67),(504,74)

Procéder au calcul de la moyenne des X et des Y ci qui donne :
Code:
$x=(505+500+450+450+470+485+494+499+497+504) / 10
$y=(74+79+70+43+38+59+58+62+67+74) / 10

Nous avons alors un seul point du polygone. Et on récupere l'index de couleur par
Code:
imagecolorat($img,$x,$y)


Et voilou ! :roll:


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 19:06 
Administrateur
Avatar de l’utilisateur
Merci d'avoir partagé ici la solution.

Excellent réflexe.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 19:33 
Professionnel
Professionnel
Avatar de l’utilisateur
Oui, sauf que c'est faux si ton polygone est concave.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 19:36 
Avatar de l’utilisateur
Hummmm, :shock: Et alors on fait comment ?


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 20:03 
Professionnel
Professionnel
Avatar de l’utilisateur
les points font partie intégrante de ta forme il n'y a pas d'arête, je me trompe ?

dans ce cas pour le couple x,y :

Code:
(505,74)


tu n'as rien besoin de calculer,

Code:
imagecolorat($img,505,74)


suffit. En fait tu récupères le premier point du tag coords, et tu testes simplement dessus.

PS : attention si tu as des arêtes d'une couleur différente, ça ne fonctionnera pas, signale le ici.


Haut
 Profil Envoyer un e-mail  
 
MessagePosté: Dim 5 Avr 2009 21:44 
Avatar de l’utilisateur
Les arêtes (ou contour du polygone si on parle de la même chose) sont de couleur noir.
Donc suivant ce que tu indique, pour être vraiment dedans et ainsi avoir la couleur de remplissage du polygone il faut que j'ajoute 2 pixels aux premières coordonnées X et Y.
Ce qui donne :
Code:
imagecolorat($img,507,76)

Qu'en pense tu ? Suis dans le vrai ?


Haut
 Profil Envoyer un e-mail  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 13 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Abonnez-vous au flux RSS

Blog

Copyright : Moteur, traduction et optimisation
Merci de votre visite sur le forum Oseox