Imagestring en PHP

Fermé
bob26 - 22 mars 2011 à 16:10
 bob26 - 1 avril 2011 à 13:16
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
22 mars 2011 à 16:17
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
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
22 mars 2011 à 16:33
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
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
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
22 mars 2011 à 16:54
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
ça m'affiche un plein écran en chinois (ou plutot en japonais ... c'est à la mode !!)
0
Utilisateur anonyme
22 mars 2011 à 20:03
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
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
24 mars 2011 à 07:51
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
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
28 mars 2011 à 10:18
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
le lien ne fonctionne pas apparemment
0
Utilisateur anonyme
29 mars 2011 à 08:16
Ce n'était qu'un exemple de syntaxe pour le lien, pas un lien réel
0
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
1 avril 2011 à 10:53
aucune idée
il doit y avoir une coquille dans votre code quelque part
0
rectification .... seule le PREMIER AREA SHAPEest pris en compte
0
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