Création d'image

Résolu
Bonjour,

Je travaille sur PHP.
J'aimerais créer une image dynamiquement qui dépendra des données stockées dans ma base de données.
Cette image sera reconstitué à chaque appel ou rafraîchissement de la page HTML.

Pourriez vous me dire comment je dois procéder, existe t-il une librairie me permettant de faire des graphiques, est-ce que cela entraînera une consommation importante de ressources sur mon server (dans ce cas comment y remédier)

Merci d'avance
Configuration: Windows XP
Firefox 2.0.0.17

2 réponses

  1. Ca consomme un peu de ressources oui ! Mais pas des masses, à voir si tu es hébergé en shared, private ou dédié, et surtout si tu as 5 ou 50000 affichages à l'heure !

    La librairie utilisée est la lib GD.
    exemple : http://free.box.free.fr/info.php3 (au hasard, merci google) et tu cherches dans la page :GD Support
    Là tu auras certainement une version indiquée.
    Après, tu te cherches un ou 2 tuto, voir éventuellement les bouts de code proposés sur php.net.
    Pars de là imagecreatefromjpeg : https://www.php.net/imagecreatefromjpeg
    et le code :

    <?php
    function LoadJpeg($imgname) {
    $im = @imagecreatefromjpeg($imgname); /* Tentative d'ouverture */
    if (!$im) { /* Vérification */
    $im = imagecreatetruecolor(150, 30); /* Création d'une image blanche */
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
    /* Affichage d'un message d'erreur */
    imagestring($im, 1, 5, 5, "Erreur de chargement de l'image $imgname", $tc);
    }
    return $im;
    }
    header("Content-Type: image/jpeg");
    $img = LoadJpeg("bogus.image");
    imagejpeg($img);
    ?>

    Voilà, en gros.

    Bon courage,

    Arnaud
    1. Bpnjour,

      Merci de cette réponse...
    2. bonjour,

      j'ai installé la librairie GD
      sous linux -> en ajoutant dans le php.ini extension=gd.so
      sous EasyPHP -> en enlevant le ; devant l'instruction extension=php_gd2.dll

      Cependant, j'obtiens le message suivant: Fatal Error Call to undefined function imagecreatetruecolor() in ../../..on line XX
      voici mon script

      $im = imagecreatetruecolor (50, 100) or die ("Impossible de crée un flux d'image GD");
      $text_color = imagecolorallocate ($im, 233, 14, 91);
      imagestring ($im, 1, 5, 5, "Une simple chaîne de texte", $text_color);
      imagepng ($im);

      Si je met @devant imagecreatetruecolor la page reste blanche et je n'ai pas de message d'erreur.

      Je ne comprend pas ce qu'il se passe peut-on m'aider?
      Merci d'avance
      Margot
    3. @pontarosebonjour,

      je cherche toujpurs une solution à mon problème;
      j'ai bien en tout début de mon code header("Content-type: image/png");

      J'ai tapé sous root apt-get install php_gd(puisphp_gd2) mais j'obtiens le message suivant: impossible de trouver le paquet php_gd

      de plus en tapant php phpinfo.php a aucun moment je ne vois apparaître d'information sur gd.
    4. @pontaroseBonjour,

      J'ai résolu une partie de mon problème; en effet j'ai réussi à installer la librairie gd en fesant
      1.apt-get update(mise à jour) puis
      2.apt-get install php5_gd sous root (je ne mettais pas le 5 de php)
      en fesant php phpinfo.php
      j'obtiens:
      gd

      GD Support => enabled
      GD Version => 2.0 or higher
      FreeType Support => enabled
      FreeType Linkage => with freetype
      FreeType Version => 2.2.1
      T1Lib Support => enabled
      GIF Read Support => enabled
      GIF Create Support => enabled
      JPG Support => enabled
      PNG Support => enabled
      WBMP Support => enabled

      en fesant
      <?php
      //on appelle la session
      session_start();

      //on teste que la personne qui accède a cette page est bien passée par le formulaire d'entré du login et mot de passe
      if(isset($_SESSION['user_login']))
      {
      header("Content-type: image/png");
      $user_login=$_SESSION['user_login'] ;

      print("You are logged as <b>$user_login</b><br><br>");

      }
      else
      {

      header ("Location: form_identification.html");
      }
      ?>

      <?php
      $image = imagecreatetruecolor (50,100) or die ("Impossible de crée un flux d'image GD");
      imagepng ($image);
      ?>
      j'obtiens le message suivant
      L'image"http://..." ne peut être affichée car elle contient des erreurs.
      si j'affiche le code source de la page il apparait
      You are logged as...
      %PNG
      ???
      IHDR???2???d???KSO???&IDAThiA1???A oOm??????????????...

      Néanmoins lorsque je change la position du header (header("Content-type: image/png");), j'obtiens le message ci-dessus:
      �PNG ��� IHDR���2���d���K�����&IDATh���1��� �Om ������������������:��%������IEND�B`

      Voici le script:
      <?php
      //on appelle la session
      session_start();
      //on teste que la personne qui accède a cette page est bien passée par le formulaire d'entré du login et mot de passe
      if(isset($_SESSION['user_login']))
      {
      $user_login=$_SESSION['user_login'] ;

      print("You are logged as <b>$user_login</b><br><br>");

      }
      else
      {
      header("Content-type: image/png");
      header ("Location: form_identification.html");
      }
      ?>

      <?php
      $image = imagecreatetruecolor (50,100) or die ("Impossible de crée un flux d'image GD");
      imagepng ($image);
      ?>

      Pouvez vous m'aider s'il vous plaît?
    5. @pontarosebonjour ,
      merci;
      Du fait qu'il n'est pas possible d'intégrer une image dans une page HTML je dois insérer ceci dans mon script
      print("<img src='test_image.php?'>");

      et dans mon script test_image.php mettre les élements me permettant d'afficher mon image.

      Soit
      <?php
      //on appelle la session
      session_start();
      //on teste que la personne qui accède a cette page est bien passée par le formulaire d'entré du login et mot de passe
      if(isset($_SESSION['user_login']))
      {
      $user_login=$_SESSION['user_login'] ;

      print("You are logged as <b>$user_login</b><br><br>");

      }
      else
      {
      header ("Location: form_identification.html");
      }
      ?>

      <?php
      print("<img src='test_image.php?'>");
      ?>

      et dans test_image.php

      $x = 210;
      $y = 120;

      $im = imagecreatetruecolor ($x,$y) or die ("Impossible de crée un flux d'image GD");
      imagepng ($im);