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);

A voir également:

15 réponses

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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
bob26
 
ça m'affiche un plein écran en chinois (ou plutot en japonais ... c'est à la mode !!)
0
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
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
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
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
Utilisateur anonyme
 
Bonjour,

La solution la plus simple c'est de passer une variable en GET dans l'URL

genre http://..../carte.php?zone=10

Cordialement
0
bob26
 
le lien ne fonctionne pas apparemment
0
Utilisateur anonyme
 
Ce n'était qu'un exemple de syntaxe pour le lien, pas un lien réel
0
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
Utilisateur anonyme
 
aucune idée
il doit y avoir une coquille dans votre code quelque part
0
bob26
 
rectification .... seule le PREMIER AREA SHAPEest pris en compte
0
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