Création d'une image GD à partir d'un formulaire [Bug]

Répondre
davinci34
le 20/03/2008 à 22:42
davinci34
Bonjour,

J'essayes depuis 2 jours de créer une image avec du texte à l'aide de la librairie GD!

Le but: créer une image à partir d'un formulaire ou on peut choisir une police dans une liste déroulante et écrire un texte dans un champ texte.
Le problème: j'arrives à la 1ère soumission à créer l'image avec le texte et la police sélectionnés mais lorsque je veux faire une seconde tentative, le formulaire disparait laissant place à l'image créée la 1ère fois avec le même texte et lorsque je veux faire 'actualiser' l'image reste et le formulaire n'apparaît plus!
Si vous avez une ou des pistes je suis preneur!

Voici le code HTML/PHP:
dyn_img.php
<?php
if(isset($_POST['SEND']))
{
if(isset($_POST['TYPO']) && isset($_POST['TEXTE']))
{
// Définission de la variable d'environnement pour GD
putenv('GDFONTPATH=' . realpath('.'));

// Nom de la police à utiliser
$typo = $_POST['TYPO'];
$texte = stripslashes($_POST['TEXTE']);

//Création de l'identifiant de l'image
$image = imagecreate(800, 50);

// couleur de fond de l'image
$fond = imagecolorallocate($image, 255, 255, 255);

// définition des couleurs du texte
$noir = imagecolorresolve($image, 100, 100, 100);
//$blanc = imagecolorresolve($image, 255, 255, 255);
//$rouge = imagecolorresolve($image, 240, 0, 0);
//$bleu = imagecolorresolve($image, 150, 150, 255);
//$vert = imagecolorresolve($image, 0, 150, 0);

// On écrit le texte provenant du formulaire avec la typo sélectionnée et la couleur noire
imagettftext($image, 20, 0, 20, 30, $noir, $typo, $texte);

// modification des entêtes
header("Content-type: image/jpeg");
// Envoi au navigateur
imagejpeg($image, "dyn_img.php", 100);
$ressource = "ok";
// Libération des ressources
imagedestroy($image);
}
}
?>
<html>
<head>
<title>TEST ::&gt; Création d'une image dynamique en PHP</title>
</head>

<body>
<p>Choisissez une typo dans la liste déroulante et écrivez votre texte</p>
<form method="post" action="">
<fieldset>
<legend>:: Choix TYPO et TEXTE ::</legend>
<p>Quelques polices True Type (.ttf): <select name="TYPO">
<option value="arial">Arial</option>
<option value="ariblk">Arial Black</option>
<option value="tahoma">Tahoma</option>
<option value="times">Times New Roman</option>
<option value="verdana">Verdana</option>
</select></p>
<p>Votre texte: <input type="text" name="TEXTE" value="" size="70" maxlength="200" />&nbsp;<input type="submit" name="SEND" value="Tester" /></p>
</fieldset>
</form>
<?php
if(isset($ressource))
{
echo "<p>Vous avez choisi la typo ". $typo ."</p>\n";
echo "<p><img src=\"dyn_img.php\" /></p>\n";
unset($ressource, $_POST['SEND']);
}
?>
</body>
</html>

Etrangement, lorsque je renvoie mon fichier par FTP et que j'actualise dans le navigateur le formulaire se réaffiche?!

Je demande simplement à quel endroit de mon code je fais 'fausse route' :-)
LA GLOBULE
le 21/03/2008 à 11:28
LA GLOBULE
Ben y'a un truc choquant dans ton code, c'est que tu génères une image et tu affiches du HTML dans le même document.
Ce n'est pas logique.

Tu dois avoir 2 fichiers ben différents.

Et dans celui ou tu affiches l'image (attention, pas celui ou tu la génères), tu dois faire un <img src="image.php" alt="image" /> (si le fichier qui genere l'image s'appelle image.php).
davinci34
le 21/03/2008 à 11:51
davinci34
Salut,

Je pensais que l'on pouvais faire tout (code PHP+HTML) sur une même page!
Je testerais ce soir après le boulot, en séparant le code traitement PHP du code HTML.
Merci de ta réponse LA GLOBULE smiley
LupusMic
le 22/03/2008 à 08:37
LupusMic
(davinci34) Ce n'est pas ce que La Globule a remarqué. L'image ne doit pas faire partie du document HTML, c'est une ressource externe au document.

Donc tu dois avoir un script qui génère le HTML, et un **autre** qui génère l'image.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours