Partage
  • Partager sur Facebook
  • Partager sur Twitter

Capturer la couleur d'un pixel

    10 octobre 2006 à 10:34:54

    Bonjour à tous, jvous explique mon (petit)problème :

    Je voudrais, lorsque l'on clique sur une partie d'une image, enregistrer ( dans un champ ) les composante de la couleur à l'endroit cliqué.
    J'ai longuement cherché et je n'ai trouvé que des sources en VB, hors je n'y connais rien et je ne trouve pas de bon tutoriaux en VB donc je fais appel à vous si vous avez quelque chose à me proposer en js ou en VB mais si vous m'expliquez >_<
    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2006 à 12:26:43

      Aujourd'hui quelqu'un sait ? ^^
      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2006 à 13:03:56

        A ma connaissance, javascript ne sais pas le faire... Tu peux récupérer les coordonnées de l'endroit cliqué mais il n'y a pas moyen de manipuler l'image: il faut que tu passe par un script php (librairie gd).

        Pour connecter js et php, tu peux passer par un système d'envoi de page ou alors avec ajax.
        • Partager sur Facebook
        • Partager sur Twitter
          11 octobre 2006 à 13:22:36

          ok merci, quelle est la fonction pour connaître les coordonnées de l'endroit cliqué ? ( il faut que l'origine des cordonnées soit sur l'image [design extensible oblige] )
          • Partager sur Facebook
          • Partager sur Twitter
            11 octobre 2006 à 13:48:14

            http://fr.php.net/manual/fr/function.imagecolorat.php

            Un petit exemple que j'ai essayé pour le principe: (mais ne fonctionne que sur firefox à cause de xmlhttprequest entre autre):

            <script type="text/javascript">
            function pixelAt(event)
            {
                    var obj =        new XMLHttpRequest();
                   
                    var img =        event.target; //Img => objet cliqué, donc l'image

                    var x = event.layerX- img.offsetLeft; //Coordonnées de l'endroit du clic
                    var y = event.layerY- img.offsetTop;
                   
                    //Ouvre la page pixel.php (voir plus bas)
                    obj.open('GET','pixel.php?x='+x+"&y=" + y + '&img=' + img.src,true);
                    obj.onreadystatechange  = function ()
                    {
                            if( obj.readyState      ==    4)
                                    alert(obj.responseText); //Affiche le résultat obtenu à partir de pixel.php
                    };
                   
                    obj.send(null);
                   
            }

            </script>
            <img src="avatar.jpg" id="img" onclick="pixelAt(event);"/>
            <!--Au moment du clique , ça déclenche la fonction pixelAt qui va utiliser ajax pour afficher les constituants-->


            et dans pixel.php:

            if( isset( $_GET['x'],$_GET['y'],$_GET['img']) )
            {
                    $im     =    imagecreatefromjpeg($_GET['img'])//Charge l'image
                    $rgb = ImageColorAt($im, intval($_GET['x']), intval($_GET['y'])); //Selectionne le pixel demandé
                    $r = ($rgb >> 16) & 0xFF; //Rouge (déplacement des bits dans la variable, difficile à expliquer, mais sache seulement que ça permet de sélectionner un des trois constituants
                    $g = ($rgb >> 8) & 0xFF; //Vert ... idem
                    $b = $rgb & 0xFF; //Bleu
                    echo "$r,$g,$b"; //Affiche les constituants du pixel
                    die(); //Sert à rien
            }


            edit: pourquoi pas ... dsl
            • Partager sur Facebook
            • Partager sur Twitter
              11 octobre 2006 à 14:03:30

              Euuu,c'est gentil de te donner la peine de me faire un code, mais si tu pouvai commenter un peu le code pour qur je coprenne comment il fonctionne ...
              • Partager sur Facebook
              • Partager sur Twitter

              Capturer la couleur d'un pixel

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown