Page 1 sur 2
Affichage d'une image avec un nom variable
Posté : 28 mai 2005, 06:41
par Je Débute
Bonjour,
Voici mon problème:
Je génère une image avec un nom variable: $nomplan
(J'utilise une fonction de création d'un chaine aléatoire que je concatène avec l'extension.png et ce n'est pas le problème)
imagepng($image,$nomplan);
l'image est bien créé avec l'extension png
cela donne par exemple :muBgIncW8I.png
je peux visualiser l'image produite en la lançant directement depuis le repertoire où elle à ete déposée.
BON
Maintenant j'ai un problème pour la lancer avec la commande img scr
Voici ce que je pense être bon:
<p>
<br />
<img src=$nomplan />
</p>
Mais l'image ne s'affiche pas (petit carré vide)
Pouvez-vous m'aider ?
Posté : 28 mai 2005, 09:07
par Cyrano
Salut,
si tu mélanges sans discernement html et PHP, ça risque fort de ne pas fonctionner : dans du HTML, il faut encadrer le PHP de balises <?php et ?> et dans du PHP, on concatène les chaines quand on veut mettre un mélange des deux.
Donc en html, ça doit donner :
<img src="<?php echo($nomplan); ?>" />
Et dans une chaine PHP ça aurait été:
echo("<img src=\"". $nomplan ."\" />");
Posté : 28 mai 2005, 10:54
par Invité
Merci Cyrano,
Je suis loin de ces exigeances.
J'ai donc essayé de remplacer mon code ocmme tu me le dis, mais j'abouti au même resultat !!!
Dans tous les sens et cela me fait toujpours rien
Posté : 28 mai 2005, 11:01
par Cyrano
Fais-nous donc voir ce bout de code, on va trouver le bobo

Posté : 28 mai 2005, 11:09
par Invité
// création du plan dans le fichier image plan.png
$code= generer_code();
$nomplan= "$code".".png";
imagepng($image,$nomplan);
?>
<p>
<br />
<img src=$nomplan />
</p>
<?
unlink ($nomplan);
//effacement du fichier;
?>
//Fonction utilisée pour la génération du code
function generer_code()
{
$code = "" ;
$valeur =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
for($i = 1 ; $i < 11 ; $i++)
$code .= substr($valeur,rand(1,62),1) ;
return $code ;
}
Posté : 28 mai 2005, 11:23
par Cyrano
Bon ok, j'ai fait la correction sur ton fichier qui devient ceci : (explications après)
<?php
// création du plan dans le fichier image plan.png
$code= generer_code();
$nomplan= "$code".".png";
imagepng($image,$nomplan);
?>
<p>
<br />
<img src="<?php echo($nomplan); ?>" />
</p>
<?
unlink ($nomplan);
//effacement du fichier;
?>
<?
//Fonction utilisée pour la génération du code
function generer_code()
{
$code = "" ;
$valeur =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
for($i = 1 ; $i < 11 ; $i++)
$code .= substr($valeur,rand(1,62),1) ;
return $code ;
}
?>
Ce qui se passe, c'est que l'adresse indiquée pour la source du fichier telle quelle implique que l'image est dans le même répertoire que le fichier qui l'appelle. Sinon, il faut modifier l'origine du fichier comme ceci:
<p>
<br />
<img src="./chemin/vers/repertoire/image/<?php echo($nomplan); ?>" />
</p>
Posté : 28 mai 2005, 11:45
par Invité
Merci beaucoup Cyrano,
En fait chez moi il semble qu'il y ai une accumulation de 2 problèmes.
Le premier vient d'être réglé grace à toi.
Maintenant si j'active la fonction unlink aprsè ... ça recommance !
<p>
<br />
<img src="<?php echo($nomplan); ?>" />
</p>
<?
unlink ($nomplan);
//effacement du fichier;
?>
Dès que je fais
<p>
<br />
<img src="<?php echo($nomplan); ?>" />
</p>
<?
//unlink ($nomplan);
//effacement du fichier;
?>
c'est bon mais je ne détruits pas le fichier de travail et je fais une accumlation de fichiers aléatoires dans mon répértoire !!!
Posté : 28 mai 2005, 11:53
par Cyrano
Tu dois faire la même chose avec unlink();
unlink ("./chemin/vers/repertoire/image/". $nomplan);
Posté : 28 mai 2005, 13:07
par Invité
Mon fichier est dans le même répertoire,
et ça ne règle pas le PB, on dirait que unlink efface le fichier avant que l'affichage ai pu se faire .
Posté : 28 mai 2005, 13:15
par Cyrano
Forcément, si le unlink est avant la ligne d'affichage, tu vas ruiner ton boulot.
Posté : 28 mai 2005, 13:23
par Invité
Oui je suis d'accord, mais il est bien APRES !
Posté : 28 mai 2005, 13:31
par Cyrano
Depuis un petit moment, je comprends mal l'idée de supprimer le fichier après l'avoir affiché. Quelle est l'idée générale de ton système ?
Posté : 28 mai 2005, 13:39
par Invité
Ouh la ça va être difficile d'expliquer.
Je me heurtais à la création d'une image avec
header ("Content-type: image/png");
Je ne sais pas pourquoi d'ailleurs , j'appelais des fonctions etc..
Je suis passé outre en créant une image sur un répertoire .
Cela marche bien ... sauf que Windows XP memorise dans son buffer les images en provenance d'internet et certains PC's s'obstinaient à afficher le rafraichissement, d'où l'idée de créer à chaque fois une image avec un nom aléatoire, de faire le traitement et l'affichage, puis une fois l'affichage fait à l'internaute, détruire le fichier qui ne sert plus à rien.
Posté : 28 mai 2005, 13:43
par Je Débute
Lire
PC's s'obstinaient à ne pas afficher le rafraichissement
Posté : 28 mai 2005, 13:53
par Je Débute
On dirait que PHP execute d'abord tout , pour envoyer ensuite au client le resualta de son traitement. Ne peut on pas forcer à envoyer l'image au client d'abord et terminer ensuite (effacement du fichier) ?