Salut a tous!!! Et oui c'est encore moi!!!! Donc dans mon bouquin pour creer une image il me dise de faire ceci: <?php header("Content-type: image/png" ; $image = @imagecreatetruecolor(150, 150) ; $noir = imagecolorcllocate ($image,0,0,0) ; $blanc = imagecolorallocate ($image,255, 255, 255) ; imagefilledrectangle ($image, 10; 10, 20, 20, $blanc) ; imagepng($image) ; imagedestroy($image) ; ?>
ce qui devrai donner une image noir avec un petit rectangle blanc mais chez rien ne s'affiche....désoler d'en demander beaucoup mais la je suis a fond dedans et quan je bloque plusieurs heures sur un meme sujet ça énerve...merci d'avance
Si on s'intéresse un tant soit peu à ce que fait le code php, c'est-à-dire à comprendre ce que l'on écrit sans bêtement recopier des TALC (1), par exemple en allant sur [www.php.net] et en demandant "imagecreatetruecolor", où il est écrit :
imagecreatetruecolor Crée une nouvelle image en couleurs vraies Description resource imagecreatetruecolor ( int $width, int $height )
Suivant votre version de PHP et de GD, cette fonction est définie ou non. De PHP version 4.0.6 à la version 4.1.x, cette fonction existe toujours si le module GD est chargé, mais l'appeler sans avoir GD2 d'installé fera que PHP lancera une erreur fatale et sortira. Avec PHP 4.2.x, ce comportement est différent et PHP lancera une alerte au lieu d'une erreur. Pour les autres versions de PHP, cette fonction n'est définie que si une version correcte de GD est installée.
Mais, dans le TALC copié depuis le mauvais bouquin, que peut-on voir ? Et bien, on voit que l'appel à la fonction imagecreatetruecolor est précédé par "@" ce qui veut dire que les retours des messages d'erreurs ne seront jamais ni affichés ni pris en compte. C'est le contre exemple même d'un TALC censé faire apprendre.
Donc, pour que tu puisses apprendre par toi-même, refais le même exercice : - Sans "@" avant l'appel à la fonction - 2 - Avec, dans le fichier Wamp/apache2/bin/php.ini, la gestion des erreurs mise sur : error_reporting = E_ALL
c'est en ôtant le caractère @ du script que mon navigateur m'a afficher successivement les deux erreurs que comportait le script (un ; mal placé et une erreur de frappe.)
En suivant ces messages d'erreur et en activant gd2, le script corrigé fonctionne.
bien vu !
Otomatic a écrit:
> Bonsoir, > > Mauvais bouquin, changer de bouquin ! > > Si on s'intéresse un tant soit peu à ce que fait le code php, > c'est-à-dire à comprendre ce que l'on écrit sans bêtement > recopier des TALC (1), par exemple en allant sur > [www.php.net] et en demandant > "imagecreatetruecolor", où il est écrit : > > imagecreatetruecolor Crée une nouvelle image en couleurs > vraies > Description > resource imagecreatetruecolor ( int $width, int $height ) > > Suivant votre version de PHP et de GD, cette fonction est > définie ou non. De PHP version 4.0.6 à la version 4.1.x, cette > fonction existe toujours si le module GD est chargé, mais > l'appeler sans avoir GD2 d'installé fera que PHP lancera une > erreur fatale et sortira. Avec PHP 4.2.x, ce comportement est > différent et PHP lancera une alerte au lieu d'une erreur. Pour > les autres versions de PHP, cette fonction n'est définie que si > une version correcte de GD est installée. > > Mais, dans le TALC copié depuis le mauvais bouquin, que peut-on > voir ? > Et bien, on voit que l'appel à la fonction imagecreatetruecolor > est précédé par "@" ce qui veut dire que les retours des > messages d'erreurs ne seront jamais ni affichés ni pris en > compte. > C'est le contre exemple même d'un TALC censé faire apprendre. > > Donc, pour que tu puisses apprendre par toi-même, refais le > même exercice : > - Sans "@" avant l'appel à la fonction > - 2 - Avec, dans le fichier Wamp/apache2/bin/php.ini, la > gestion des erreurs mise sur : > error_reporting = E_ALL > > > (1) Truc A La Con >
Comme l'a déjà dit Otomatic, il faut avant tout essayer de comprendre.
Je rajoute une remarque à propos de cette ligne :
$noir = imagecolorallocate ($image,0,0,0);
or dans la doc il est dit :
" imagecreatetruecolor() retourne une ressource représentant une image noire. "
donc cette ligne est parfaitement inutile...
Jette ton livre, honte aux auteurs qui ne n'ont même pas pris la peine de lire la doc officielle de PHP :p
[EDIT] Par contre si tu avais voulu mettre un fond bleu, par exemple, cette ligne aurait servi car le premier appel à la fonction imagecolorallocate() définit la couleur de fond.
Ha oui sinon heu ton code marche sous Firefox, sous IE7 il propose de télécharger le fichier.php mais il suffit de le renommer en .png pour visualiser l'image...
qui n'est effectivement pas du tout, mais alors pas du tout, à comparer avec l'EXCELLENT PHP5 Avancé de Cyril... et qui vient de sortir en 4eme édition.
ça correspond (en plus détaillé) à ce qui est indiqué dans le livre que j'utilise (Matt Zandstra / PHP5 et MySQL chez campus press) et qui semble moins déconnant que celui de LeniX.
Quoique j'y ai découvert qq erreurs de traduction dans les scripts... Mais c'est aussi comme ça qu'on progresse !
Parce que chacun fait vraiment n'importe quoi en PHP.
Une norme cohérente, juste, telle que celle que propose PEAR et ça ira mieux. C'est ce que j'appelle du professionalisme (soucis de perfection, de clarté / lisibilité, et la beauté du code =)