Imagestring en PHP

bob26 -  
 bob26 -
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. Utilisateur anonyme
     
    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
    0
  2. bob26
     
    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
    0
  3. Utilisateur anonyme
     
    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
    0
  4. bob26
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bob26
     
    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 ?
    0
  7. Utilisateur anonyme
     
    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
    0
  8. bob26
     
    ça m'affiche un plein écran en chinois (ou plutot en japonais ... c'est à la mode !!)
    0
    1. Utilisateur anonyme
       
      Oui il faut préciser le mime type dans un header auparavant
      header("Content-type: image/png");
      sans vouloir abuser, ce serait bien que vous regardiez un peu avant ici https://www.php.net/manual/fr/ref.image.php
      0
  9. bob26
     
    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 !!!
    0
  10. Utilisateur anonyme
     
    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);
    ?>
    0
  11. bob26
     
    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 ?
    0
  12. bob26
     
    le lien ne fonctionne pas apparemment
    0
    1. Utilisateur anonyme
       
      Ce n'était qu'un exemple de syntaxe pour le lien, pas un lien réel
      0
  13. bob26
     
    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 ?
    0
    1. Utilisateur anonyme
       
      aucune idée
      il doit y avoir une coquille dans votre code quelque part
      0
  14. bob26
     
    rectification .... seule le PREMIER AREA SHAPEest pris en compte
    0
  15. bob26
     
    dsl
    ça fonctionne bien !
    j'avais placé le MAP NAME = dans la boucle au lieu de le placer avant la boucle !
    donc sujet clos
    0