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

JavaScript Discussion :

Coordonnées d'un clic sur une image


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Coordonnées d'un clic sur une image
    Qui connaît la solution pour obtenir les coordonnées d'un clic sur une image affichée en php? J'ai utilisé une fonction javascript qui permet d'obtenir ce résultat, encore qu'elle ne récupère que les coordonnées du clic dans la fenêtre et non celles de l'image, mais je ne vois pas comment transmettre le résultat obtenu à l'environnement php ... S'il existait une fonction similaire en php, ce serait le top.

    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function localiser(e)
    {
    if(navigator.appName == 'Netscape')
      {
       document.captureEvents(Event.CLICK);
      }
    if(navigator.appName == 'Microsoft Internet Explorer')
      {
       x = event.clientX;
       y = event.clientY;
      }
    else
      {
       x = e.pageX;
       y = e.pageY;
      }
    alert('x = ' + x + ', y = ' + y);
    }
    document.onclick=localiser;

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    si tu mets un input type image ...
    les coordonnées du click sont envoyées avec le form ...

    quel est le but de la récupération des coordonnées ? tu veux en faire quoi après ?

    ____________________________________________________________________________________________


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <body onload="alert(self.location.href)">
    <form action="" onsubmit="this.action=self.location.href" method="get"/>
    <input type='image' src="one.jpg"  />
    </form>
    </body>
    étonnant non ?

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut acquisition des coordonées d'un clic souris
    Mon propos est de générer automatiquement un ensemble de balises AREA en fonction des points x,y récupérés dans une image.

    Alors pourquoi faire? Simple : quand on regarde une photo de classe (ref_image.jpg, par exemple), pas moyen de savoir qui est qui sans aller au bas de la page pour voir la liste, quand elle existe, ou de surcharger l'image par une incrustation... Donc, avec une passe préalable sur l'image, on repère une par une les têtes par la saisie d'une séquence de coordonnées – disons 4 couples, ou un seul si on décide d’utiliser le circle - prises autour, puis on lui associe une référence (le nom de l'élève) et on génère l’AREA correspondante, la référence se trouvant dans sa balise title et on la range dans le fichier ref_image.inc. À l'utilisation, le contenu de ce fichier est inséré dans le code de la page d'affichage à laquelle on a également passé en paramètre le nom de l'image. Ainsi, à chaque image correspond un fichier de balises AREA et à chaque tête correspond une AREA associée au nom qui s'affiche quand on passe sur la zone définie. Il n'y a pas d'erreur d'association possible puisque le nom du fichier à inclure est le même que celui de l'image : seule l'extension est différente.

    En résumé, il y a 4 phases distinctes :

    1 - celle où on récupère le ou les couples de coordonnées,
    2 - celle où on récupère la référence associée,
    3 - celle où on génère la balise AREA qu'on ajoute au fichier et enfin
    4 - l'affichage avec insertion du fichier et le référencement de l'image.

    Il y a donc de la cuisine à prévoir pour boucler sur les différentes acquisitions...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    le meilleur moyen pour genere des maps complexe est de passer par gimp et selectionner des zones puis exporter les chemins ...
    tu recupères ensuite les fichiers exporter pour les parser ...

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut acquisition des coordonées d'un clic souris
    ça être quoi, gimp? Un langage spécifique? Je suppose qu'on trouve de la doc sur le net? Mon problème est relativement simple, les AREAs prévues n'étant pas d'un niveau de complexité tel qu'il me faille un outil spécial.

    J'ai essayé ton code et ça marche mais... mais ce que je voudrais, c'est récupérer les coordonnées de manière automatique : je clique et j'ai la réponse dans des variables $x et $y. Là, je tombe sur une alerte dont je ne peux rien faire sauf si j'ouvre une seconde fenêtre (l'alerte est bloquante : si je clique sur OK, je perds la réponse) et que j'y saisis les coordonnées fournies, juste ce que je voulais éviter...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    si je comprends bien tu as une image en ligne et c'est l'utilisateur qui a déposé la photo qui doit la mapper ?

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut acquisition des coordonées d'un clic souris
    Non, l'image, c'est moi qui la mets à l'affichage et qui effectue les relevés topographiques au moment de la préparation. Mais ensuite, oui, c'est le visiteur du site qui va survoler l'image et être renseigné sur les identités, grâce aux AREAs que j'y aurais ajoutées pour lui simplifier la vie.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ha ben si c'est juste pour faire ton mapping ...

    downloade gimp ...
    "equivalent" de photoshop ...

    ouvre ton image
    selectionne une region ...
    selection vers chemin
    exporte le chemin
    puis ouvre le fichier ainsi créé par l'exportation
    tu verras des coordonnées qui ressemblent curieusement à celle d'un area ...

  9. #9
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Danke... Je vais essayer de suite : ça m'a tout l'air d'être ce que je recherche. Bon, il va falloir que je travaille en deux passes mais le principal est que j'obtienne ce que je veux. D'une certaine manière, ça peut même me simplifier la vie.

    Si ça colle, je reviens cliquer sur le bouton Résolu...

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    C'est comme ça que j'ai mappé tous les départements sur une carte de france.
    Tous les freeware que j'ai pu trouvé ne me permettaient pas de faire des zones polygonales ...

    il doit y avoir en plus dans gimp un outil de mappage mais juste avec des cercles et des rectangles ...

  11. #11
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    j'ai installé gimp : ok, il a l'air puissant mais c'est aussi une usine à gaz, du moins pour ce que j'envisage de faire pour le moment. D'un autre côté, il doit y avoir un problème chez moi puisque, quand je construit un chemin et que je veux le sauvegarder, il y a une espèce de zone qui s'ouvre en bas de la fenêtre et qui se ferme aussitôt... Pas moyen de mettre la main sur le code généré. Et puis, lors du téléchargement, l'aide n'était pas jointe.

    Donc, j'en reviens à ma question initiale : en supposant que je n'aie besoin que d'un couple de coordonnées, comment est-ce que je peux obtenir ça simplement? Il existe des fonctions php qui permettent de connaître la valeur RVB d'un pixel mais aucune retournant les coordonnées? On peut le faire également en javascript mais alors comment passer le résultat à php?

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    J'ai bein un vieux bout de code qui traine ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <HTML> 
    <HEAD> 
     
    <SCRIPT LANGUAGE="JavaScript"><!-- 
     
    var e
    function getMouse(e){
    	var x,y;
    	var elt = document.documentElement;
    	if ( document.captureEvents ) {
    		x = e.pageX;
    		y = e.pageY;
    	} else if ( window.event.clientX ) {
    		x = window.event.clientX+elt.scrollLeft;
    		y = window.event.clientY+elt.scrollTop;
    	}
    	window.mouseX = x;
    	window.mouseY = y;
    document.test.x.value = x; 
    document.test.y.value = y; 
     
    }
    //(window.document.attachEvent)    ? window.document.attachEvent("onmousemove", getMouse) : window.addEventListener("mousemove", getMouse, false);
    function populate(){document.onmousemove=function(event){getMouse(event)}}
    //--></SCRIPT> 
     
    </HEAD> 
     
    <BODY  onload='populate()' > <!--mousemove="getMouse(event)"> <!-- onmousedown="microsoftMouseMove()" onmouseup="microsoftMouseMove()" --> 
     
    <FORM NAME="test"> 
    X: <INPUT TYPE="TEXT" NAME="x" SIZE="4"> Y: <INPUT TYPUE="TEXT" NAME="y" SIZE="4"> 
    </FORM> 
     
    </BODY> 
    </HTML>
    faudrait juste le remettre à la page, le nettoyer un peu, relativiser les coordonnées par rapport au offSet de l'image... et stocker tes coordonnées ...

  13. #13
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    OK, ça passe bien de javascript à php, à condition de mettre la déclaration des champs d'affichage x et y avant la fonction populate()... Mais si, au lieu des mouvements de la souris, je pouvais récupérer l'événement clic, ce serait extra. Bon, tel que le code est écrit, les coordonnées obtenues sont celles de la fenêtre mais il me semble avoir vu passer une fonction qui permet de connaître la position d'un élément : en soustrayant les valeurs de position de celles du clic, je devrais retomber sur mes pattes. Est-ce qu'il existe un "getclick()" pour remplacer le getmouse() ou bien une variable particulière fournie par getmouse pour récupérer le clic?

  14. #14
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Eurêka!!! En remplaçant "onmousemove" par "onmousedown" je tombe pile poil sur ce que je cherchais... À la correction des valeurs près pour ne récupérer que les valeurs dans l'image et non dans la page.

    Merci infiniment

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <HTML> 
    <HEAD> 
     
    <SCRIPT type='text/javascript'><!-- 
    var first=true
    var x,y,x2,y2,topdiv,leftdiv,blx, bly
     
    function microsoftMouseMove() { 
    document.test.x.value = window.event.x; 
    document.test.y.value = window.event.y; 
    var message=(first)?'premier click':'second click';
    if(first){ 
              x=window.event.x; 
              y=window.event.y;  
              topdiv=y
              leftdiv=x
    } 
     
    if(!first){
    var sendem=confirm('validez vous la capture ?')
    //ici il ne te reste plus qu'a chopper le top left top+height left+width ....
    alert('coordonnées : x1='+x+' y1='+y+' et x2='+x2+' y2='+y2);
    }
     
    first=!first; 
    } 
     
     
    function drawdiv(){
    document.getElementById('dotframe').style.display='none'
    if (!first){
     			x2=window.event.x; 
              y2=window.event.y;
              document.test.x.value = window.event.x; 
    			document.test.y.value = window.event.y; 
     
              topdiv=(y2<y)?y2:y;
              leftdiv=(x2<x)?x2:x;
              x2=(x2<leftdiv)?x:x2;
              y2=(y2<topdiv)?y:y2;
              blx=(x2<x)?x:x2;
              bly=(y2<y)?y:y2;
     
    document.getElementById('dotframe').style.top=topdiv+'px';
    document.getElementById('dotframe').style.left=leftdiv+'px';
    document.getElementById('dotframe').style.height=(bly-topdiv)+'px';
    document.getElementById('dotframe').style.width=(blx-leftdiv)+'px';
    document.getElementById('dotframe').style.display='block';
    }
    }
    //--></SCRIPT> 
     
    </HEAD> 
     
    <BODY onclick="microsoftMouseMove()" onmousemove="drawdiv()"> 
     
    <FORM NAME="test"> 
    X: <INPUT TYPE="TEXT" NAME="x" SIZE="4"> Y: <INPUT TYPUE="TEXT" NAME="y" SIZE="4"> 
    </FORM> 
    <div id="dotframe" style="position:absolute;display:none;height:0px;width:0px;background-color:none;border:1px gray;z-index:2;top:0px;left:0px;border-style:dotted;font-size:0px;"></div>
    </BODY> 
    </HTML>
    Tiens j'ai retoruver un autre bout de code qui lui ne fonctionne que Sous IE, il faut juste réussir à faire le bon medley des deux codes...

  16. #16
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Non, ce que je suis en train de faire, je compte le refiler à quelques copains pas trop au fait de ces manips, techniquement hors de leur portée, et c'est justement pour leur faciliter la vie que je le fais. Mais je ne peux pas les obliger à changer de navigateur, déjà qu'ils ont des problèmes avec celui qu'ils ont et celui de leurs visiteurs...

    Ce que j'ai réussi à obtenir (grâce à ton aide, évidemment) fonctionne à quelques ajustements près liés aux bizarreries d'Internet Explorer qui, décidément, ne fonctionne pas comme les autres : il y a une différence dans la réponse des coordonnées qu'il retourne par rapport à celles obtenues avec Firefox. J'ai donc un test supplémentaire à faire pour ajuster les valeurs. Quant aux fonctions dont je parlais (retrouver les coordonnées d'un objet), elles ne s'appliquent pas au contexte ordinaire php et de plus, elles sont expérimentales...

  17. #17
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    sinon il reste les freeewares ...

    http://www.freedownloadscenter.com/W...ng_Tools/free/

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

Discussions similaires

  1. 2 actions différentes avec un clic sur une image
    Par beegees dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/02/2008, 19h37
  2. Clic sur une image
    Par nettoyerforum dans le forum Langage
    Réponses: 5
    Dernier message: 24/05/2007, 19h19
  3. coordonnées d'un click sur une image
    Par piteon dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 05/04/2007, 22h30
  4. Réponses: 1
    Dernier message: 25/03/2007, 18h20
  5. Coordonnées de la souris sur une image
    Par renaud26 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 21h11

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