<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://bashi.titaxium.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>bashi - Tag - Developpement</title>
  <link>http://bashi.titaxium.org/</link>
  <atom:link href="http://bashi.titaxium.org/feed/tag/Developpement/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Sat, 23 Jan 2010 22:38:52 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Introduction aux fonctions graphique de la library GD avec PHP</title>
    <link>http://bashi.titaxium.org/post/2008/04/23/Introduction-aux-fonctions-graphique-de-la-library-GD-avec-PHP</link>
    <guid isPermaLink="false">urn:md5:856948130309245484afce1b7f15cc1d</guid>
    <pubDate>Wed, 23 Apr 2008 10:40:00 +0200</pubDate>
    <dc:creator>Nassim AB</dc:creator>
        <category>Apache</category><category>bibliothèques</category><category>Developpement</category><category>EasyPHP</category><category>GD</category><category>library</category><category>PHP</category><category>WAMP</category>    
    <description>&lt;p&gt;Cette &lt;a href=&quot;http://www.bashi.fr/tag/library&quot;&gt;library&lt;/a&gt; de PHP
permet d’effectuer des modifications sur les images. Ce n’est pas de la
retouche d’image mais on peut, ce qui est régulièrement fait, par
exemple ajouter dynamiquement du texte sur une image. Mais ce n’est
qu’une simple utilisation de cette library.&lt;/p&gt;
&lt;h3&gt;Library&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;En effet, j’utilise library et non librairie par principe. Beaucoup
traduisent «&amp;nbsp;library&amp;nbsp;» par «&amp;nbsp;librairie&amp;nbsp;» mais c’est un faux ami. Dans
un souci de formalisme, j’utiliserais par la suite le mot
«&amp;nbsp;bibliothèque&amp;nbsp;» qui est la réelle signification de «&amp;nbsp;library ». Si
j’utilise librairie par moment c’est la fatigue ^^.&lt;/p&gt;
&lt;h3&gt;Des exemples&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;Vu comme ça, il est assez difficile de trouver des exemples mais, pour ceux qui connaissent les outils tels que &lt;a href=&quot;http://fr.wikipedia.org/wiki/Nagios&quot;&gt;Nagios&lt;/a&gt;, &lt;a href=&quot;http://fr.wikipedia.org/wiki/Cacti&quot;&gt;Cacti&lt;/a&gt;, &lt;a href=&quot;http://fr.wikipedia.org/wiki/Zabbix&quot;&gt;Zabbix&lt;/a&gt; ou encore &lt;a href=&quot;http://fr.wikipedia.org/wiki/Munin&quot;&gt;Munin&lt;/a&gt;, les graphiques générés par ces outils de monitoring sont faits à partir de ces &lt;a href=&quot;http://www.bashi.fr/tag/biblioth%C3%A8ques&quot;&gt;bibliothèques&lt;/a&gt; &lt;a href=&quot;http://fr.wikipedia.org/wiki/GD&quot;&gt;GD&lt;/a&gt;.&lt;/p&gt;    &lt;h3&gt;Pré-requis&lt;/h3&gt;
&lt;p&gt;Pour utiliser cette fonction vous aurez besoin au minimum&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;d’un espace sur un serveur web.&lt;/li&gt;
&lt;li&gt;que ce serveur web accepte PHP4 ou 5.&lt;/li&gt;
&lt;li&gt;que le serveur que vous utilisez a cette fonction «&amp;nbsp;GD&amp;nbsp;» activée.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Note :&lt;/ins&gt;&lt;/strong&gt; Pour savoir si ces deux dernières conditions sont remplies, créez une page &lt;a href=&quot;http://www.bashi.fr/tag/PHP&quot;&gt;PHP&lt;/a&gt; contenant le code&amp;nbsp;:
&lt;code&gt;&amp;lt;&amp;nbsp;? phpinfo()&amp;nbsp;; ?&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et lancez la page. En théorie vous devriez avoir une partie dédiée nommée «&amp;nbsp;GD ».
Dans le cas contraire, une partie de ce billet est consacrée à l'installation de cette bibliothèque donc vous ne serez pas perdu(e)s&amp;nbsp;!&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;Cette partie ne concerne que les gens qui possèdent leur propre serveur web (que ce soit &lt;a href=&quot;http://fr.wikipedia.org/wiki/EasyPHP&quot; hreflang=&quot;fr&quot;&gt;EasyPHP&lt;/a&gt;, &lt;a href=&quot;http://fr.wikipedia.org/wiki/WAMP&quot; hreflang=&quot;fr&quot;&gt;WAMP&lt;/a&gt;, &lt;a href=&quot;http://fr.wikipedia.org/wiki/Apache&quot;&gt;Apache&lt;/a&gt; ou autre).
Pour les autres, demandez à votre hébergeur, c'est plus simple.
Donc il faut que vous trouviez votre &lt;strong&gt;php.ini&lt;/strong&gt; et que vous l'éditiez de façon à décommenter la ligne (et donc activer) qui concerne l'extension GD:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pour EasyPHP et WAMP&amp;nbsp;: &quot;extension=php_gd2.dll&quot;&lt;/li&gt;
&lt;li&gt;Pour Apache&amp;nbsp;: &quot;extension=gd.so&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Attention :&lt;/ins&gt;&lt;/strong&gt; Ne pas oublier de redémarrer Apache&amp;nbsp;!&lt;/p&gt;
&lt;h3&gt;Bases à connaitre&lt;/h3&gt;
&lt;p&gt;La création d'image dynamique est simple en soi mais elle demande une certaine rigueur. Ici nous ne verrons que la création simple d'une image et l'écriture de texte sur celle ci.&lt;/p&gt;
&lt;p&gt;Pour commencer il faut créer un fichier quelconque avec une extension *.php et l'éditer.
Dedans, on place toujours un &quot;&lt;strong&gt;header&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;code&gt;&amp;lt;? header (&quot;Content-type: image/png&quot;); ?&amp;gt;&lt;/code&gt;
&lt;br /&gt;Ce &quot;chapeau&quot; permet au navigateur de renvoyer une image PNG au lieu d'une page HTML classique.
J'ai choisi PNG mais vous pouvez mettre JPEG à la place, ce choix n'a été fait que pour une question de qualité d'image.
&lt;br /&gt;
Une fois notre &quot;image initialisée&quot;, il nous faut renseigner les ressources que nous voulons afficher. Pour se faire, plusieurs solutions:
-&amp;gt; Vous voulez générer une simple image de couleur noire et écrire &quot;Texte&quot; dessus:&lt;/p&gt;
&lt;p&gt;@@&amp;lt;?
header (&quot;Content-type: image/png&quot;);          // Indication du type de fichier en sortie&lt;br /&gt;
$image_simple = imagecreate(300,500);   // On crée une image de 300px sur 500px&lt;br /&gt;
$color = imagecolorallocate($image_simple, 0, 0, 0);   // On défini la couleur de fond de l'image $image_simple &lt;br /&gt;
$color2 = imagecolorallocate($image_simple, 255, 255, 255);   // On défini la 2eme couleur de fond de l'image $image_simple (la premiere seule s'affiche) &lt;br /&gt;
imagestring($image_simple, 10, 100, 20, &quot;GD c'est cool !&quot;, $color2);&lt;br /&gt;
imagepng($image_simple);                            // On l'affiche  !&lt;br /&gt;
?&amp;gt;
@@
On a ici l'exemple d'une image qui s'affichera sans soucis ce qu'on lui a demandé.
&lt;br /&gt;
Détaillons la fonction imagecolorallocate() quand même ^^.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En premier lieu l'image à colorier&amp;nbsp;: $image_simple&lt;/li&gt;
&lt;li&gt;Puis le taux de Rouge (R), Vert (G) et Bleu (B)&amp;nbsp;: ces valeurs sont comprises entre 0 et 255&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On a donc $variable = imagecolorallocate($Image,R,G,B);
En ce qui concerne les couleurs le noir est défini sur 0,0,0 tandis que le blanc est sur 255,255,255  ce qui donnerait imagecolorallocate($image,255,255,255).&lt;br /&gt;
Pour avoir une plus grande plage de valeurs et de couleurs donc, je vous redirige vers &lt;a href=&quot;http://www.alaide.com/outils_convertrgbhexa.php&quot; hreflang=&quot;fr&quot; title=&quot;Alaide.com&quot;&gt;un convertisseur ^^&lt;/a&gt;.
&lt;br /&gt;
Enfin, ajouter du texte au dessus tout ça et ceci est géré par la fonction imagestring()
On renseigne&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L'image sur laquelle on place le texte&amp;nbsp;: $image_simple&lt;/li&gt;
&lt;li&gt;La taille de la police&amp;nbsp;: 10&lt;/li&gt;
&lt;li&gt;La coordonnée en abscisse (X): 100&lt;/li&gt;
&lt;li&gt;La coordonnée en ordonnée (Y)&amp;nbsp;: 20&lt;/li&gt;
&lt;li&gt;Le texte à écrire&amp;nbsp;: &quot;GD c'est cool !&quot;&lt;/li&gt;
&lt;li&gt;Couleur du texte&amp;nbsp;: $color2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
Voilà&amp;nbsp;! Vous avez votre image&amp;nbsp;! Pour la voir il suffit soit de lancer la page PHP, soit de l'intégrer dans une page web via &lt;br /&gt;
&lt;code&gt;&amp;lt;img src=&quot;http://www.bashi.fr/post/image.php&quot;/&amp;gt;&lt;/code&gt;&lt;br /&gt;
Oui, j'ai bien mis .php et non .png. C'est très bizarre au début mais, comme dit au début, le &quot;header&quot; fait comprendre au navigateur que la page chargée est une image au format PNG.&lt;/p&gt;
&lt;h3&gt;Astuces&lt;/h3&gt;
&lt;p&gt;Si vous voulez générer une image et l'enregistrer à un emplacement spécifique, il vous suffit de remplacer
&lt;code&gt;imagepng($image_simple);&lt;/code&gt;&lt;br /&gt;
Par:
&lt;code&gt;imagepng($destination, 'nom_de_limage.png');&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;&lt;ins&gt;Note:&lt;/ins&gt;&lt;/strong&gt; Encore une fois, vous pouvez remplacer png par jpeg et imagepng par imagejpeg donc =)
&lt;br /&gt;
Pour mettre une image de fond, remplacez&amp;nbsp;:
&lt;code&gt;$image_simple = imagecreate(300,500);&lt;/code&gt;&lt;br /&gt;
Par:
&lt;code&gt;$image_simple = imagecreatefromjpeg(&quot;nom_de_limage.jpg&quot;);&lt;/code&gt;&lt;br /&gt;
Le changement de JPG à PNG fonctionne toujours. Il est conseillé de privilégier le PNG pour une question de qualité d'image =)
&lt;br /&gt;
Voila&amp;nbsp;! Maintenant vous savez générer des images avec du texte dessus&amp;nbsp;!
&lt;/p&gt;
&lt;h3&gt;Bientôt&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Créer une image dynamique des statistiques de votre blog &lt;a href=&quot;http://www.titaxium.com/&quot; hreflang=&quot;fr&quot; title=&quot;TitaXiuM&quot;&gt;TitaXiuM&lt;/a&gt; (ou dotclear).&lt;/li&gt;
&lt;li&gt;Créer une image dynamique de suivi de projet web.&lt;/li&gt;
&lt;li&gt;Créer une signature dynamique de statut serveur.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://bashi.titaxium.org/post/2008/04/23/Introduction-aux-fonctions-graphique-de-la-library-GD-avec-PHP#comment-form</comments>
      <wfw:comment>http://bashi.titaxium.org/post/2008/04/23/Introduction-aux-fonctions-graphique-de-la-library-GD-avec-PHP#comment-form</wfw:comment>
      <wfw:commentRss>http://bashi.titaxium.org/feed/atom/comments/118</wfw:commentRss>
      </item>
    
</channel>
</rss>