Imagestring en PHP

Bonjour,
je ne sais pas si qqun pourra me répondre sur le code PHP suivant qui affiche bien l'image carte_drome_villes.jpg
mais qui bloque sur la fonction imagestring
en renvoyant l'erreur suivante " Warning: imagestring() expects parameter 1 to be resource, string given in ...."

$Wpoint = 5 ;
$Hpoint = 5 ;
$Nocom = 15 ;
$Nomcom = "ARTHEMONAY" ;
$Xcom = 162 ;
$Ycom = 120 ;
$Left = 700 ;
$Top = 20 ;
$Width = 400 ;
$Height = 600 ;

$Xpoint = $Left + $Xcom;
$Ypoint = $Top + $Ycom ;

$carte = 'carte_drome_villes.jpg';
ECHO '<IMG STYLE="position:absolute; TOP: ' . $Top . 'px; Left:'. $Left. 'px ; WIDTH: '. $Width .' px; HEIGHT: '. $Height.' px; border:3px solid;" src="' . $carte . '"/>';

$ima = imagecreatetruecolor(120,20)
or die('Impossible de crée un flux d\'image GD');

$text_color = imagecolorallocate ($ima, 70, 70, 70);

imagestring ($carte, 3, 200, 140, $Nomcom, $text_color);

15 réponses

  1. dsl
    ça fonctionne bien !
    j'avais placé le MAP NAME = dans la boucle au lieu de le placer avant la boucle !
    donc sujet clos
    1. Bonjour
      et désolé pour la question précédente !!! j'avais pas compris
      mais Merci pour la réponse ... ça fonctionne tres bien

      Par contre, comme j'ai plusieurs cartes mappées différentes + un nombre de zones différentes pour chaque carte + des coordonnées différentes (évidemment) + une variable à transmettre différente ... j'ai mis toutes ces valeurs en variables (récupérées dans un BDD Mysql) et je voulais faire avec une boucle FOR NEXT la déclaration des AREA SHAPE .... et apparemment ça ne fonctionne pas .... seule la dernière zone de la boucle est prise en compte !
      Est ce que ce n'est pas possible ? ou est ce que j'oublie qq chose ?
      1. aucune idée
        il doit y avoir une coquille dans votre code quelque part
    2. le lien ne fonctionne pas apparemment
      1. Ce n'était qu'un exemple de syntaxe pour le lien, pas un lien réel
    3. OK
      grand merci
      ça marche
      une autre question (sans vouloir abuser !! )
      à partir d'une carte mappée je voudrais que chaque zone de la carte amene vers un même lien mais avec une variable différente
      quelle est la meilleure solution ?
      1. Ce code là fonctionne à condition d'avoir une image carte_drome_villes.jpg sur le même répertoire que le fichier PHP

        <?php
        header("Content-type: image/jpg");
        $img = imagecreatefromjpeg ("carte_drome_villes.jpg");
        $text_color = imagecolorallocate ($img, 70, 70, 70);
        imagestring ($img, 3, 200, 140, 'texte', $text_color);
        imagejpeg($img);
        ?>
        1. non tu n'abuses pas
          mais même si je suis débutant en programmation PHP .... je ne suis pas un "novice" quand même
          et je te rassure ... avant de poster ... je suis allé à la pêche aux infos
          et si je suis là ... c'est que je seche !!!
          mais c'est vrai que j'oublie certainement quelque chose d'évident pour toi

          donc comme tu veux !!!
          1. ça m'affiche un plein écran en chinois (ou plutot en japonais ... c'est à la mode !!)
          2. Non...

            L'image sur laquelle vous dessinez c'est $ima, pas une autre

            Si vous voulez dessiner sur votre fichier "carte_drome_villes.jpg"

            il va falloir faire ceci

            $img = resource imagecreatefromjpeg ("carte_drome_villes.jpg");
            $text_color = imagecolorallocate ($img, 70, 70, 70);
            imagestring ($img, 3, 200, 140, $Nomcom, $text_color);
            imagejpeg($img);

            on ne travaille plus sur $ima
            1. mais je suis débutant en php donc un oubli ?
              l'image ""carte_drome_villes.jpg" s'affiche correctement
              et je voudrais afficher par dessus la chaine $Nomcom a une position bien précise

              est ce la bonne méthode ?
              1. non ça ne change rien
                l'image "carte_drome_villes.jpg" fait 400 X 600 px
                $ima fait 120 X 20
                et tjrs pas d'affichage de la chaine $Nomcom
                1. Votre image fait 120x120 pixels
                  Vous affichez le texte en X=200 et Y=140
                  Donc pas dans l'image

                  essayez

                  imagestring ($ima, 3, 20, 14, $Nomcom, $text_color);

                  Ca devrait afficher quelque chose
                  1. re
                    merci de la réponse rapide
                    maintenant il n'y a plus d'erreur .... l'image "carte_drome_villes.jpg" s'affiche bien
                    mais pas la chaine $Nomcom
                    1. Bonjour,

                      Le premier paramètre de imagestring est la ressource de l'image donc $ima et nom pas le nom du fichier que vous voulez créer

                      $ima = imagecreatetruecolor(120,20)
                      or die('Impossible de crée un flux d\'image GD');
                      
                      $text_color = imagecolorallocate ($ima, 70, 70, 70);
                      
                      imagestring ($ima, 3, 200, 140, $Nomcom, $text_color); 
                      


                      Cordialement