Probleme avec gd

eddie5150 Messages postés 34 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 20 octobre 2008 - 19 mai 2006 à 11:58
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 19 mai 2006 à 19:01
Bonjour tout le monde.

J'ai un probleme avec la librairie gd, quand j'essaye d'afficher un graphique, composé de rectangles, j'obtiens un magnifique : ‰PNG  IHDRúȼ0 PLTEÈddðððÿ¤zYöIDATxœíÑ1nÃ0 …aiÐÒYº.
Le code viens d'un site web, et apparemment, il marche sans probleme.

J'ai bien mis, au tout début de mon fichier php, header("Content-type: image/png");

De plus, apparemment, la librairie est bien activée :
GD Support, enabled, ----
GD Version, bundled (2.0.28 compatible)

<x§Ë~Û!gÈ}z„ align="center" ui*´¥]’ÿ="" ²ðƒ(:„‡k¬9Ö?ð2îí{‡o5µÔb©eÉ-´)Ëœãêõmµ?h‘’¦©.s^æ”ü÷ÛdwÉ»2ïªyíþÛÇf¾´[¼®»="" ’b:ßïlÿÜ¿ú="ªSìï¿¡ÿ²öéWÝ„¸šÍÛÀEÄ;ô+)ÞŸN†óò6’Wüuܶí㑼ž7<Çã‡ü».Ÿx<Çãñx<ÇãúƒnOø'ðVsá{9ÇãñøÿñVîõ½ÿÍ÷r<Çã~$xBîÎåHñŽG6âIEND®B`‚Quelqu'un aurait-il une solution ?</x§Ë~Û!gÈ}z„>

4 réponses

juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
19 mai 2006 à 13:01
Salut,

Donne nous le liens où tu as trouver le code, sa pourais nous aidez.

Tu as regarder ce que Firefox en penser de ton image ?

As-tu mis un @ devant le header pour masquer une eventuel notice, car il ya une erreur qui c'est generer avant OU que tu as un espace ou autre tout au debut du fichier avant le <?php, ou tout à la fin du fichier ?

Essaye cela:
- Commente ou enleve le header(..)
- Commente ou enleve le imagepng()
Regarde ensuite si le fichier fait bien 0 octets, qu'il nya aucune notice, aucune erreur, aucun caractére.

Là sa a bien l'aire d'un PNG qui a raté, il est soit corrumpu, soit generer par quelque chose.
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
19 mai 2006 à 14:55
le probleme est tt bete ... c'est kom les header already sent.

pleins de gens ont ce probleme je te conseille de regarder des tuto tt simple

et de lire toutes les lignes...
header ("Content-type: image/png");

http://www.lephpfacile.com/cours/index.php?p=23

------------------------------------------------------------------------------------------------------------------
         Ilvaut
mieux poser une question et passer pour bête que le rester toutesa v
eddie5150 Messages postés 34 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 20 octobre 2008 1
19 mai 2006 à 15:46
Teclis01 -> J'ai bien regardé, mais la librairie est bien installée chez moi, donc le probleme ne vient pas de la ...


juki_webmaster -> avec le @, rien ne se passe, sinon, si je commente le imagepng(), le fichier est bien vide.
Sous firefox, j'ai un message : L'image  ne peut être affichée car elle contient des erreurs...

Pourtant, j'ai essayé en faisant :

imagePng($image,'essai.png');
echo "";

et la, ca marche parfaitement, le seul problème c'est qu'il enregistre l'image, alors que j'aimerai simplement l'afficher directement.

Voici le code :

<?php
  // On pourra supposer que les données sont lues
  // dans une base de données mais dans l'immédiat
  // a titre d'exemple elles sont simplement codées "en dur"
  $valeurs = array(12,23,9,58,23,26,57,48,12);

  [javascript:window.open('/php/references/header.php', '_blank', 'width=404,height=400');void(''); header]("Content-type: image/png");
  
  $largeur = 250;
  $hauteur = 200;
  $img = imageCreate($largeur, $hauteur);
  $rouge         = imageColorAllocate($img, 200, 100, 100);
  $noir          = imageColorAllocate($img,   0,   0,   0);
  $fond          = imageColorAllocate($img, 240, 240, 240);
  $barreCouleur  = imageColorAllocate($img,   0, 255,   0);
  //imagecolortransparent($im,$rouge);
  
  $titre       = "Histogramme";
  $titrePolice = 5;
  imageString($img, $titrePolice,
              ($largeur-ImageFontWidth($titrePolice)*strlen($titre))/2,
              0, $titre, $noir);
  //imageTTFText($im, 15, 90, $largeur-10, $hauteur-10, $noir, "Gigi.ttf",
  //           "Copyright PHP Facile !");

  // Tracé du fond de l'histogramme
  imageFilledRectangle($img, 10, 20, $largeur-25, $hauteur-10, $fond);

  // Connaissant le nombre de barres = sizeOf($valeurs)
  // et la largeur de l'image (en tenant compte des bords)
  // il est possible de déterminer la largeur d'une barre
  $barreLargeur = (int)(($largeur-35)/(1.5*sizeOf($valeurs)+0.5));

  // Pour ajuster l'échelle (en hauteur) il faut déterminer
  // la plus grande valeur du tableau
  $max = 0;
  for ($i=0; $i<sizeOf($valeurs); $i++) {
    if ($valeurs[$i]>$max) $max = $valeurs[$i];
  }
  
  // Nous avons toutes les informations nécessaire
  // il est alors possible de tracer toutes les barres
  for ($i=0; $i<sizeOf($valeurs); $i++) {
    $x = 10+(int)($barreLargeur*(0.5+$i*1.5));
    $barreHauteur = (int)(($valeurs[$i]*($hauteur-40))/$max);  

    imageFilledRectangle($img, $x,
                         $hauteur-15-$barreHauteur,
                         $x+$barreLargeur,
                         $hauteur-15,
                         $barreCouleur);
  }
  
  imagePNG($img);
  imageDestroy($img);  
?>
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
19 mai 2006 à 19:01
Aucun probleme chez moi, tu as dut louper une notice:

Warning: Cannot modify header information - headers already sent by (output started at d:\www\www\iii.php:2) in d:\www\www\iii.php on line 8

Chez moi j'ai mis volontairement un saut de ligne (\r\n) aux deux primieres octets avant le <?php

Nettoie TOUT caractére en debut de script, espace, tabulation, saut de ligne etc et tout devrais etre normale.

A la prochaine, pense a utiliser ma petite methode special GD :)

Une petite cure error_reporting s'impose, php.ini du dossier Apache: error_reporting = E_ALL , ou/et dans ton script: error_reporting(E_ALL);
Rejoignez-nous