Maison / Travailler sur Internet / Exemples de graphiques en php. Créez des graphiques interactifs en PHP et FusionCharts. Amélioration du code PHP

Exemples de graphiques en php. Créez des graphiques interactifs en PHP et FusionCharts. Amélioration du code PHP


Tu sais, vieil homme, je n'ai rien vu de tel depuis longtemps. Il semblait même que l'anime devait être lié. La vieillesse s'avançait insensiblement, et tous ces garçons aux sabres qui tiraient et ces filles aux cheveux vifs se confondaient en une masse collante continue. Il a commencé à sembler que tous les personnages ne parlaient que bêtement, seulement fort et seulement de l'éternel. Et tout bouillonne de folie juvénile mecha-fantasy, wow! .. Et comme je suis content d'avoir trouvé "Theatre ...". À quoi cela ressemble-t-il? Sur, comme nous avons l'habitude de la voir - pas trop. Autrement dit, dessiner quelque chose - oui, bien sûr. Et côté humeur, ça "tire" plus sur ", probablement. Ou aux vieux courts métrages géorgiens (vous vous souvenez de ceux-là ?), qui « ressemblent plus à la vie ». Toutes sortes de gens différents, jeunes et bien au contraire, ils se parlent, vivent, se connaissent, travaillent... Bien sûr, un moment clé est pris pour l'intrigue, pas le plus routinier. Mais comme c'est bien que ce moment clé ne soit pas le premier baiser ni l'acquisition d'un pouvoir mystique, mais, par exemple, une réunion de camarades de classe plusieurs années plus tard, ou le licenciement d'un travail bien rémunéré, ou la connaissance de la mère- en droit. « Y a-t-il une vie après 30 ans ? » Oui ? J'aime à penser qu'il y en a. Et j'aime que Rumiko Takahashi le pense aussi.

Ne crie pas, minou, je ne serai pas long. Je vérifie déjà. Et en général, que veut dire « mon ordinateur » ?! Et où est le mien alors ?.. Après tout, j'ai aussi parfois besoin de regarder un anime ou deux. Regardez, il a tout rempli "" et "" ... Puis-je demander, une fois dans ma vie calmement ?! Qu'est-ce que je regarde ? Théâtre Rumiko Takahashi, il y a des boîtes là-bas... Pourquoi diable, lapin ? Premièrement, ce n'est pas de la camelote, ce n'est que 2003, et deuxièmement, "" tu l'aimes "", tu lis avec plaisir - le mangaka est le même, mais tu ne boiras pas la compétence, pinson. Takahashi-san sait très bien dessiner et intriguer... Pourquoi la série est-elle si courte alors ? Et ce n'est pas une série, c'est un ensemble de courts métrages - avec des intrigues séparées, avec des personnages différents. Drôle ou larmoyant ? Et ceux-là, et ceux-là - vous voyez, il est écrit : "drame", "comédie", "vie de tous les jours"... Vous n'aimez pas "la vie de tous les jours" ? Ne parle pas comme ça, petit haut, sinon elle ne t'aimera pas non plus. Une bonne routine quotidienne est une bonne chose! Laissez-moi vous montrer comment ils ont caché un pingouin aux voisins dans un Khrouchtchev japonais. Seriyushka pour maman, comme dans l'enfance, et je vais cuisiner le dîner, d'accord? ..

J'ai juste pleuré, merde ! Je ne pensais pas pouvoir me lancer dans des trucs comme ça ! Et c'est drôle, par Dieu, c'est drôle, surtout à propos d'une vieille femme qui est tombée du coma et qui cherche pourquoi elle a été ramenée à la vie. Et cette histoire d'amour préhistorique à travers d'autres regards : comment elle se raconte, et comment - son sujet ; ce qu'on appelle, "sentir la différence!". Et le happy-end sur les jambes de la vieille qui se casse, je viens de ronger l'oreiller de tendresse !.. Et l'épisode sur le palais de mariage ! J'aime tellement les vraies histoires romantiques, pas quand tout brille d'un polissage glamour, mais quand on peut vraiment sympathiser avec une personne vivante. Et à propos des mari et femme vieillissants, ces regrets sont si bien transmis, ces tentatives d'attraper la jeunesse par la queue insaisissable et déjà galeuse... et tout finit si sagement et si bien. J'ai même pensé: peut-être que mes ancêtres ne sont pas complètement indifférents les uns aux autres, mais ils ont juste oublié comment le montrer avec l'âge ...

Je regarde la série le soir. Lentement. Ils sont très différents, vous ne voulez pas les mélanger. C'est comme si vous visitiez différents endroits. Et l'ambiance est complètement différente, et les impressions. Non. Vous ne l'aimerez probablement pas. Parce que rien d'extraordinaire. ET surréaliste Même. Et même "psychologisme" - "enfance difficile, manque de vitamines, aurait acheté une gameboy à temps, les salauds, voyez-vous, ne seraient pas devenus des maniaco-tueurs" - non. Et rien de particulièrement instructif. De telles choses n'enseignent fondamentalement rien. Que peut enseigner la vie de quelqu'un d'autre ? Juste parce qu'elle est là aussi. Vous pouvez essayer de compter avec cela ... Sans pathos ni notes aiguës. Ce n'est même pas un drame, tu sais ? Comme l'a dit Carlson: "les bagatelles, la question de la vie!". Tout cela fait partie des choses de la vie. Spontané. Nous sommes si souvent accusés de sympathie pour les tueurs professionnels et toutes sortes d'autres veuves que sympathiser avec un commis ou une femme au foyer, c'est une sorte de mauvaise manière... oui, je ne vous lis pas la morale, enlevez-la . Vous avez demandé - j'ai répondu. Allez, parlez-moi de vos nouveaux produits. Alors je le prendrai quand le "Théâtre..." sera fini. C'est comme le vin, ça ne s'avale pas. Les nuances n'atteindront pas ou l'arrière-goût sera taché. Ce serait gênant...

Afin de déterminer la portée des outils de création graphique dans les scénarios Web, considérez la série suivante choix utilisation graphique :

  • Les images statiques créées par vous-même ou empruntées quelque part peuvent être intégrées dans une page HTML.
  • Des images générées par programme (HTML + CSS) peuvent être utilisées.
  • Vous pouvez utiliser la bibliothèque gd pour pré-créer des images graphiques statiques pour toutes les situations possibles qui surviennent lors de l'exécution du script, les enregistrer dans des fichiers et les afficher par condition.

Nous n'envisagerons pas l'option d'implémenter des graphiques à l'aide d'images statiques en raison de sa simplicité, nous allons donc d'abord envisager une option simple (graphiques HTML + CSS), puis envisager d'utiliser la bibliothèque gd en PHP.

Graphiques HTML + CSS

Les visiteurs du site Web connaissent bien les graphiques à barres horizontales à côtés colorés, qui sont particulièrement courants pour illustrer les résultats des enquêtes. A première vue, on a l'impression qu'une sorte de aides graphiques, mais en réalité il suffit d'utiliser quelques scripts simples :

Travailler avec des graphiques en PHP, HTML, CSS /* Styles CSS qui façonnent l'apparence */ body div ( height: 1em; display: inline-block; vertical-align: middle ) span ( display: inline-block; width: 120px ) .orange ( fond : orange ) .pomme ( fond : #33CC66 ) .banane ( fond : jaune ) .tomate ( fond : rouge ) .concombre ( fond : vert ) .pomme de terre ( fond : gris ) Bon de commande Fruits Oranges Pommes Bananes Légumes Tomates Concombres Pommes de terre

Cet exemple ne démontre aucune nouvelle fonctionnalité de PHP, mais montre simplement un moyen simple de créer des graphiques en utilisant HTML et CSS (dans ce cas, des graphiques à barres) :

bibliothèque gd

Les outils graphiques décrits dans la section précédente épuisent presque les capacités du code HTML standard (bien qu'il soit intéressant de noter que nous n'avons pas couvert le puissant générateur graphique HTML5 Canvas). Passons maintenant à la description des méthodes de création de graphiques vraiment arbitraires à l'aide de la bibliothèque gd.

Description générale de la bibliothèque gd

D'une manière générale, l'ensemble outils gd est une bibliothèque de code C pour créer et manipuler des images. Cette bibliothèque a été initialement développée et mise à la disposition du public par les personnes talentueuses et généreuses de Boutell.com.

La bibliothèque gd elle-même n'est pas programme graphique ou un programme de dessin, et n'est pas une application autonome ou interface graphique utilisateur. Au lieu de cela, la bibliothèque gd fournit des fonctions qui peuvent être appelées par n'importe quel programme pour effectuer la manipulation d'image souhaitée. Cela signifie que tout programme C qui a besoin d'utiliser le code de la bibliothèque gd peut être lié à la bibliothèque gd. C'est exactement le problème que les développeurs du système PHP ont résolu.

En fait, un ensemble de fonctions d'interface a été écrit à cet effet, ce qui facilite l'appel des routines gd à partir d'un script PHP. Mais la bibliothèque gd elle-même ne contient aucun code spécifique à PHP, et des interfaces ont été développées qui permettent d'accéder à la bibliothèque à partir de plusieurs autres langages et environnements de programmation, notamment Perl, Pascal, Haskell et REXX.

La bibliothèque gd permet d'appeler des fonctions pour créer des images sources (initialement vides, ressemblant à une feuille de papier vierge), dessiner et dessiner à l'intérieur de ces images sources à l'aide différentes manières et éventuellement convertir l'image du format d'image interne de gd en un format d'image standard, puis l'envoyer à sa destination finale (sortie vers une fenêtre de navigateur ou enregistrement dans un fichier ou une base de données). Et comme toutes ces opérations sont effectuées sous le contrôle du programme et non manuellement, les images créées peuvent devenir arbitrairement complexes et dépendre de toutes les situations au cours du programme qu'il est souhaitable de les rendre dépendantes.

Formats d'images

La bibliothèque gd vous permet essentiellement d'importer et d'exporter des images en utilisant une grande variété de formats. Les formats d'image les plus populaires sont GIF, JPEG et PNG, bien que ce dernier de ces formats soit principalement utilisé dans nos exemples.

Les formats GIF et PNG sont conçus pour décrire une grille d'éléments colorés correspondant à des pixels, avec quelques ajouts. Le premier ajout est que les cellules peuvent contenir des numéros ou des index de couleurs réels dans une table de numéros de couleurs. (La première option crée des images plus expressives car elle permet un nombre illimité de couleurs différentes, tandis que la dernière option crée des images plus compactes.)

Le deuxième ajout est le suivant. Bien sûr, la représentation conceptuelle des formats GIF et PNG est assez simple, mais en pratique, la lecture, l'écriture et le transfert d'images dans ces formats se font toujours sous une forme compressée. La compression est nécessaire car une grande quantité de mémoire est nécessaire pour stocker les données représentées sous la forme d'une grille de cellules. Une image simple de 500x400 pixels a 200 000 pixels, et si chaque pixel nécessite trois octets, la quantité de mémoire requise est déjà supérieure à un demi-mégaoctet.

Le sujet de la compression est vaste et complexe, mais la plupart des algorithmes de compression reposent sur la réduction de la redondance des images afin de réduire la taille des images. (Par exemple, il faudrait moins d'espace mémoire pour spécifier que chaque pixel d'une image est vert que pour spécifier une valeur verte pour chaque pixel séparément.) des problèmes si complexes que les méthodes de résolution de ces problèmes, implémentées dans l'algorithme de compression utilisé pour générer des images au format GIF, ont même été brevetées.

Mise en place de la bibliothèque

Pour être franc, la tâche d'installer la bibliothèque gd et de la faire fonctionner avec succès en conjonction avec un système PHP est assez difficile. Ce n'est pas dû à des lacunes. logiciel PHP ou gd, mais est entièrement déterminé par des problèmes de configuration ; en particulier, vous devez comprendre où les bibliothèques gd devraient et se trouvent réellement, et vous assurer que les étapes de compilation et de liaison pour tous les exécutables sont effectuées correctement. Par conséquent, la meilleure situation possible est lorsque l'utilisateur constate que la bibliothèque gd est déjà installée et que le support gd est déjà activé dans le système PHP (soit avec l'aimable autorisation de la société d'hébergement Web, soit parce que la bibliothèque est incluse dans le système PHP installé).

Par conséquent, l'installation de la bibliothèque gd doit commencer à partir de l'étape zéro, en vérifiant si la bibliothèque gd a déjà été installée. Tout d'abord, entrez le code suivant dans votre fichier de script et affichez les résultats de son exécution dans un navigateur, que vos scripts soient soutenus par une société d'hébergement Web ou entièrement par votre propre installation :

Après avoir affiché cette page à l'écran, il suffit de rechercher la chaîne de texte "gd" dans la fenêtre du navigateur. Cela devrait aboutir à une sous-section décrivant dans quelle mesure votre installation PHP est autorisée à prendre en charge la bibliothèque gd. Si vous n'avez l'intention de préparer que certains types d'images (par exemple, dans Format PNG), et les résultats de la fonction phpinfo() indiquent que le support d'image pour ce type d'image est autorisé, vous pouvez commencer tout de suite. Et si les données de la version gd incluent le mot "bundled", alors la bibliothèque gd fournie avec PHP est utilisée.

Si la tentative de trouver la mention de la bibliothèque gd échoue et que vous effectuez vous-même l'installation de PHP, vous pouvez installer et configurer la bibliothèque gd. (En revanche, si votre hébergeur s'occupe de l'installation de PHP, tout ce que vous avez à faire est de lui demander de fournir un support pour la bibliothèque gd, ou d'utiliser un autre hébergeur.)

L'utilisation de la bibliothèque gd fournie avec PHP élimine de nombreux tracas associés à l'installation de gd, mais pas tous. Le fait est que l'utilisation de la version incluse dans le package de distribution lui-même vous permet d'obtenir la bibliothèque gd, mais pas nécessairement toutes les bibliothèques nécessaires au fonctionnement de gd. La bibliothèque gd elle-même dépend de plusieurs autres bibliothèques : libpng (pour manipuler des images PNG), zlib (utilisé pour la compression) et jpeg-6b ou version ultérieure (pour manipuler des images PNG). Images JPEG, si besoin). Les bibliothèques spécifiées sont déjà présentes dans de nombreuses installations Linux, auquel cas il peut être suffisant d'inclure l'option requise avec (telle que --with-zlib) dans les paramètres sans spécifier le répertoire d'installation. Si vous effectuez la configuration PHP vous-même, l'ajout de l'option --with-gd est suffisant pour garantir que la version groupée de gd est incluse dans l'exécutable. Et si vous voulez pointer vers une version différente, utilisez plutôt l'option --with-gd=path.

Si vous trouvez un ou plusieurs manquants bibliothèques requises, cela signifie que ces bibliothèques devront être générées séparément. Pour savoir où trouver versions actuelles, vous pouvez commencer par consulter la documentation disponible sur www.libgd.org.

Principes de base du travail avec la bibliothèque gd

Lorsqu'une image est créée ou manipulée avec la boîte à outils gd, l'image est dans un format gd spécial qui ne correspond à aucun type d'image courant. Il est théoriquement possible d'exporter des images dans ce format gd, mais une telle opération est rarement utilisée, car l'image résultante n'est pas compressée et ne peut pas être affichée dans un navigateur ou dans un simple programme graphique.

Une image traitée à l'aide de la boîte à outils gd est caractérisée par des informations sur la largeur, la hauteur et la couleur de tous les pixels, dont le nombre est égal au produit de la largeur et de la hauteur. Typiquement, un programme commence son interaction avec la bibliothèque gd soit en créant une nouvelle image vierge (sur laquelle dessiner et dessiner) soit en important une image à partir d'un fichier. Les étapes suivantes se déroulent généralement dans les étapes suivantes : premièrement, la répartition des couleurs dans l'image, deuxièmement, dessiner et peindre ou manipuler l'image à l'aide d'autres opérations, troisièmement, convertir l'image dans un format courant (par exemple, PNG ou JPEG ) et transférez-le vers la destination.

Représentation des couleurs

Il existe deux manières de représenter les couleurs dans les images gd : la représentation basée sur la palette, qui est limitée à 256 couleurs, et la représentation réaliste des couleurs, qui vous permet de spécifier montant arbitraire différents numéros de couleur RBG. Dans gd 1.x, la seule option était d'utiliser des couleurs en palette, mais dans la bibliothèque gd 2.x et la version de cette bibliothèque livrée avec PHP, la possibilité de créer à la fois des images en palette et des images en couleurs réalistes est prise en charge. Notez que chaque image gd particulière doit être basée sur une palette ou sur des couleurs fidèles (RVB) ; cela signifie qu'il n'y a aucun moyen d'injecter des couleurs réalistes dans des images en palette.

La fonction ImageCreate() doit être appelée pour obtenir l'image vide basée sur la palette initiale, et la fonction ImageCreateTrueColor() est utilisée pour obtenir l'image dans des couleurs réalistes.

Images basées sur la palette

Les couleurs sont spécifiées dans le format Rouge-Vert-Bleu (RVB), en utilisant trois nombres de 0 à 255. Par exemple, la couleur spécifiée par les nombres (255, 0, 0) est rouge vif, la couleur ( 0, 255, 0) est vert, la couleur (0, 0, 255) est bleue, la couleur (0, 0, 0) est noire, la couleur (255, 255, 255) est blanche et la couleur (127, 127, 127) - gris. En créant de plus en plus de nouvelles couleurs, vous pouvez choisir arbitrairement les valeurs des trois composantes de couleur.

Toute peinture sur une image doit être réalisée avec une couleur spécifique, et les couleurs doivent être réparties dans l'image avant d'être utilisées. De plus, la première couleur distribuée dans l'image devient automatiquement la couleur de fond. Ainsi, vous ne pouvez en aucun cas penser que vous pouvez vous passer de spécifier des couleurs, et généralement l'opération de distribution des couleurs devient la première opération après la création d'une nouvelle image vide.

Les couleurs des images en palette sont créées à l'aide de la fonction imagecolorallocate(), qui prend comme paramètres une image (créée précédemment) et trois entiers spécifiant le pourcentage de rouge, de vert et de bleu. La valeur de retour est un entier qui spécifie l'indice de la nouvelle couleur dans la palette interne de l'image. Cette valeur de retour doit être affectée à une variable car la valeur d'index spécifiée est requise pour toutes les opérations futures à effectuer à l'aide de la couleur donnée.

Les images basées sur une palette peuvent avoir un maximum de 256 couleurs (le lecteur peut être intéressé ou non par ce sur quoi ces images sont réellement basées, mais chaque pixel d'une image basée sur une palette est en réalité un seul octet qui stocke l'index d'une élément dans la palette de 256 couleurs.)

Notez que l'index renvoyé lors de la distribution d'une des couleurs dans une image n'a de sens que pour cette image. Par exemple, si dans un script PHP la variable $black se voit attribuer une couleur distribuée dans une image, cela n'a aucun sens d'utiliser cette variable comme entrée de couleur pour une commande de dessin appelée pour traiter une autre image.

Images aux couleurs réalistes

La bibliothèque gd 2.0 et versions ultérieures offre également la possibilité de créer des images sans palette dans lesquelles chaque pixel stocke un nombre arbitraire Couleurs RVB. Dans ce format de couleur dit réaliste, le nombre de couleurs possibles est extrêmement élevé. Cette fonctionnalité repousse non seulement les limites de l'expression artistique, mais vous permet également de reproduire fidèlement des images PNG et JPEG avec des couleurs réalistes chargées en mémoire à l'aide de la boîte à outils gd.

Sauf qu'une fonction différente est utilisée pour créer l'image d'origine et qu'il n'y a aucune restriction sur la sélection des différentes couleurs, les principes de travail avec des images aux couleurs réalistes sont similaires à ceux des images basées sur une palette.

En particulier, vous pouvez toujours appeler la fonction ImageColorAllocate() pour créer de nouvelles couleurs et définir la valeur de retour sur une variable pour une utilisation ultérieure dans les commandes de dessin. La seule différence est que la valeur renvoyée est le numéro de couleur RVB, pas l'index de l'élément dans la palette. De plus, dans les images couleur réalistes, il n'y a pas de concept de couleur d'arrière-plan créée comme effet secondaire de la fonction ImageColorAllocate() ; à la suite de l'initialisation, tous les pixels reçoivent une désignation noire (0, 0, 0).

Transparence

Les versions de gd 2.x prennent en charge le concept de transparence. Cela utilise un canal alpha (en plus des valeurs rouge, vert et bleu) qui indique le degré de transparence de la couleur. Cela permet, par exemple, de superposer une forme à une autre de manière à ce que la première forme reste partiellement visible, plutôt que de recouvrir complètement la seconde.

En PHP, de nombreuses fonctions d'image ont un équivalent qui contient le mot "alpha" dans le nom, ce qui indique que dans ces fonctions la couleur est représentée par quatre valeurs (R,G,B,A). Par exemple, la fonction imageColorAllocate() prend trois paramètres, et lorsque vous appelez la fonction ImageColorAllocateAlpha(), vous devez spécifier un quatrième paramètre avec une valeur comprise entre 0 et 127. Une valeur de zéro indique que la couleur est complètement opaque, tandis qu'une la valeur 127 indique que la couleur est complètement transparente.

Coordonnées et commandes de dessin

Après avoir créé une image à l'aide de la boîte à outils gd, un système de coordonnées est implicitement formé, ce qui vous permet d'y définir des commandes de dessin. Les valeurs limites des coordonnées dans ce système sont déterminées paramètres donnés largeur et hauteur de l'image.

L'origine des coordonnées dans ce système, correspondant aux coordonnées (0, 0), est située dans le coin supérieur gauche de l'image. La direction positive pour les valeurs X est de gauche à droite et pour les valeurs Y, de haut en bas. (Dans les systèmes de coordonnées infographie cet emplacement de l'origine est commun, mais ceux qui ont étudié la géométrie analytique semblent être habitués au fait que l'origine se trouve dans le coin inférieur gauche du diagramme.)

Le nombre de commandes de dessin est très important. Ces commandes incluent, mais sans s'y limiter, des commandes pour dessiner des segments de ligne, des rectangles et des arcs, ainsi que des commandes pour définir des valeurs de pixel spécifiques. Mais gardez à l'esprit que le résultat final de toutes ces commandes de dessin et de dessin est l'attribution de valeurs de pixel. Après avoir exécuté des commandes qui modifient les valeurs de pixel, il ne reste aucune trace en mémoire (à l'exception des valeurs modifiées elles-mêmes), il n'y a donc aucun moyen d'annuler l'effet des commandes de dessin et de dessin ou de présenter séparément les résultats de différentes commandes.

Rien n'empêche l'utilisation de commandes de dessin qui vont au-delà image spécifiée, mais ce dessin n'a aucun effet visible. Par exemple, l'image ne montrera pas un rectangle dont les coordonnées sont toutes négatives.

Conversion de formats

Toutes les opérations de dessin et de manipulation d'image sont effectuées sur l'image représentée au format interne de gd. Et une fois ces opérations terminées, l'une des commandes de conversion et de sortie (imagepng, imagetjpeg, etc.) peut être appelée dans le script pour convertir cette image au format requis. format graphique et affichez-le dans la fenêtre du navigateur de l'utilisateur (ou dans un fichier).

Libérer des ressources

Une fois que le résultat de la transformation de l'image finie gd est transféré à l'utilisateur, nous pouvons considérer que le travail avec la version interne est terminé. Cela signifie que cette version doit être détruit. Le droit chemin effectuer une telle opération consiste à appeler la fonction imagedestroy() avec une image en paramètre.

fonctions de la bibliothèque gd

Nous n'allons pas énumérer et décrire séparément dans cet article toutes les fonctions fournies dans l'interface gd de l'interpréteur PHP. Pour prendre connaissance de ces informations, nous vous recommandons d'utiliser la section "Traitement et génération d'images" du manuel de php.net. La plupart des fonctions gd appartiennent à l'une des catégories présentées dans le tableau ci-dessous. Notez que les noms de fonction répertoriés dans ce tableau ont la première lettre de chaque mot en majuscule pour la lisibilité, mais ce n'est pas toujours le cas dans les exemples de code car les noms Fonctions PHP insensible à la casse :

Classification des fonctions gd Type Exemple Remarque
Fonctions de création d'images ImageCreate(), ImageCreateTruecolor(), ImageCreateFromGd(), ImageCreateFromJpeg() Renvoie une nouvelle image gd. La fonction ImageCreate() prend comme paramètres la largeur et la hauteur de l'image, tandis que les paramètres des autres fonctions sont un chemin de fichier, une URL ou une chaîne contenant une image précédemment créée à charger et à convertir au format gd
Fonctions qui effectuent des opérations de distribution des couleurs ImageColorAllocate(), ImageColorAllocateAlpha(), ImageColorDeallocate() La fonction ImageColorAllocate() prend une poignée d'image et les valeurs de couleur rouge, verte et bleue requises comme paramètres, puis renvoie un numéro de couleur à utiliser ultérieurement dans les opérations de dessin et de dessin. La fonction ImageColorAllocateAlpha prend un paramètre supplémentaire - coefficient de transparence (0-127)
Fonctions qui effectuent des opérations de correspondance des couleurs ImageColorClosest(), ImageColorClosestAlpha(), ImageColorExact(), ImageColorExactAlpha() Renvoie l'index de la couleur correspondante dans l'image de la palette. Les fonctions contenant le mot "Le plus proche" dans leur nom renvoient la couleur correspondante la plus proche (la précision de correspondance est mesurée par la distance entre les points dans l'espace de valeurs RVB) ; les fonctions libellées "Exact" renvoient le numéro de couleur uniquement s'il est identique à celui recherché, sinon elles renvoient -1, les fonctions libellées "Alpha" opèrent sur des couleurs définies à l'aide de quatre valeurs (avec des couleurs transparentes)
Fonctions de dessin au trait ImageLine(), ImageDashedLine(), ImageRectangle(), ImagePolygon(), ImageEllipse(), ImageArc() Utilisé pour dessiner des segments de ligne ou des courbes d'une forme spécifiée. Habituellement, le premier paramètre de chacune de ces fonctions est l'image, le dernier paramètre est la couleur et les paramètres intermédiaires sont les coordonnées X et Y.
Fonctions de réglage du stylet pour tracer des lignes ImageSetStyle(), ImageSetThickness() Modifiez les paramètres qui affectent les caractéristiques des lignes créées par les commandes de dessin de ligne suivantes (certaines de ces fonctions ne s'appliquent qu'à gd 2.0.1 ou version ultérieure)
Fonctions de dessin et de remplissage ImageFilledRectangle(), ImageFilledEllipse(), ImageFilledPolygon(), ImageFilledArc(), ImageFill() En règle générale, ils sont similaires aux fonctions correspondantes pour dessiner des lignes, mais ils permettent non seulement de dessiner les contours des zones, mais aussi de remplir les zones créées avec de la couleur. La fonction spéciale ImageFill() effectue une opération de remplissage en utilisant la couleur de remplissage spécifiée. Le remplissage est effectué dans toutes les directions, en commençant au point XY spécifié (certaines de ces fonctions nécessitent gd 2.0.1 ou version ultérieure)
Fonctions pour travailler avec du texte ImageString(), ImageLoadFont() La fonction ImageString prend comme paramètres un descripteur d'image, un numéro de police, des coordonnées x et y, une chaîne de texte et une couleur. Si le numéro de police est compris entre 1 et 5, l'une des cinq polices intégrées est utilisée pour afficher la ligne dans cette couleur. D'autre part, un numéro de police supérieur à 5 indique le résultat du chargement d'une police personnalisée à l'aide de la fonction ImageLoadFont().
Fonctions d'exportation ImagePng(), ImageJpeg() Convertissez l'image interne de gd en une image au format approprié, puis envoyez cette image au flux de sortie. Si un seul paramètre (descripteur d'image) est donné, l'image est renvoyée à l'utilisateur, et lors de l'utilisation paramètre supplémentaire, qui est le chemin d'accès au fichier, la destination du flux de sortie est le fichier
Fonction de destruction d'image ImageDestruction() Prend un handle d'image comme paramètre et libère toutes les ressources associées à l'image
Prise en charge des transferts d'images HTTP

Pour qu'une image s'affiche correctement dans le navigateur de l'utilisateur, il faut spécifier d'où l'image doit provenir et quel est son format. Par conséquent, il n'est malheureusement pas possible d'injecter simplement, par exemple en appelant la fonction imageToPng() dans fichier créé HTML et ainsi résoudre le problème d'affichage d'une image. Essentiellement, vous devez entrelacer le code de sortie de l'image avec le code HTML généré dans le script PHP, et vous pouvez utiliser l'une des trois options décrites ci-dessous pour ce faire.

Création d'images pleine page

La totalité de la page générée peut être encadrée comme une image. Dans ce cas, il est nécessaire de passer un en-tête HTTP qui précède les données de l'image et ainsi déclarer qu'une image d'un type particulier suit. Par exemple, les lignes suivantes peuvent être fournies à la fin du script :

// ... code qui crée une image et affecte // à la variable $image header("Content-type: image/png"); // Affiche le titre dans le navigateur imagepng($image); // Passe les données de l'image elle-même convertie en PNG imagedestroy($image); // Ressources gratuites

L'avantage de cette approche est que toute information, y compris les paramètres POST, peut être utilisée pour transmettre des instructions sur la composition de la future image. Et son inconvénient est que la page résultante ne peut contenir aucun code HTML normal. En fait, vous devez même faire attention à ne pas envoyer de texte avant le titre et l'image dans les scripts, car cela revient à envoyer du contenu prématurément. Dans ce cas, le message d'erreur "En-têtes déjà envoyés..." apparaît.

Incorporer des images stockées dans des fichiers

Notons tout d'abord que dans Langage HTML poignée prise en charge , qui vous permet d'intégrer une image en spécifiant un chemin ou une URL de fichier image, comme dans l'exemple suivant :

Cette construction s'applique aux fichiers image statiques, mais il n'y a aucune raison pour qu'elle ne puisse pas être utilisée pour injecter une image nouvellement créée. Par conséquent, il est possible de préparer un scénario dans lequel l'image est d'abord créée, puis les données d'image sont écrites dans un fichier local, après quoi le code HTML est généré avec le descripteur approprié pointant vers juste parce que fichier donné.

Les seuls inconvénients de cette approche sont que, premièrement, vous devez inclure des opérations d'écriture de fichiers dans le processus de création de page, ce qui peut prendre beaucoup de temps, et deuxièmement, vous devez déterminer quoi faire avec les fichiers lorsqu'ils sont terminés .

Mais dans certaines situations, cette approche est idéale. Il s'agit de sur la création et la mise en cache d'images représentant un ensemble fini de choix. Dans ce cas, il existe une certaine manière d'associer une situation particulière à un nom de fichier image. Lorsque certaines de ces situations nécessitent une sortie d'image, il vérifie si le fichier correspondant existe déjà. En cas de réponse positive, un lien vers ce fichier, formaté comme un descripteur, est simplement appliqué. , et si la réponse est négative, alors une image est créée, écrite dans un fichier, puis à nouveau un lien vers cette image est appliqué. En fin de compte, la formation de nouveaux fichiers ne sera tout simplement pas nécessaire.

Intégration d'images générées dans des scripts

Enfin, il n'y a aucune raison pour qu'il ne soit pas possible de fournir un script d'imagerie hors ligne, puis d'intégrer l'image résultante dans page dynamique créé par un autre script, en précisant dans le descripteur L'URL de ce script. Dans ce cas, la seule difficulté est de choisir comment transmettre les données nécessaires à la page dépendante. Par exemple, un descripteur indiquant une image intégrée pourrait ressembler à ceci :

Dans ce cas, le script ballpage.php renvoie des images PNG de balles colorées à différentes positions dans le dessin.

Cependant, lors de l'utilisation de cette approche, des problèmes de performances peuvent survenir, car les serveurs Web et les navigateurs vérifient parfois les suffixes des fichiers en cours de traitement et, après avoir reçu les résultats de la vérification, y réagissent de différentes manières. Par exemple, le script de rendu de la page balle peut avoir besoin d'une extension .php pour qu'Apache détermine que le code serveur donné doit être interprété comme du code PHP (bien que le mode de traitement requis puisse également être défini à l'aide de fichiers de configuration).

Cependant, il existe certaines versions non standard de navigateurs qui ne prennent pas en compte la possibilité qu'un fichier .php génère une image, même si l'en-tête passé indique qu'une image suit. Par conséquent, lors de l'utilisation de la méthode spécifiée, il est nécessaire de vérifier les scripts dans différents navigateurs et assurez-vous que le public cible des utilisateurs recevra les pages de la manière que vous avez prévue.

Vous trouverez ci-dessous des exemples d'utilisation de la bibliothèque gd pour créer des images.

Un exemple d'utilisation de la librairie gd : créer des formes simples

Dans l'exemple suivant, nous allons montrer comment générer un dessin contenant des formes géométriques simples à l'aide de la bibliothèque gd :

Remplacez les paramètres par les vôtres et enregistrez ce fichier sous connect-to-database.php dans le dossier fcdemo.

Insérer des données aléatoires

S'il s'agissait d'un projet réel, la table des utilisateurs serait reconstituée au fil du temps, mais pour la démonstration, nous devons insérer des données. Écrivons un petit script qui insérera des données aléatoires dans une table. Ne vous inquiétez pas si vous ne comprenez pas le code suivant - ce n'est pas important pour ce tutoriel.

Enregistrez ce fichier sous generate-random-data.php dans le même dossier.

Nous incluons d'abord le fichier de connexion à la base de données. Ensuite, nous fixons la période à partir de laquelle l'heure d'enregistrement de l'utilisateur sera sélectionnée au hasard. Vous pouvez modifier le nombre de lignes à insérer. Pour ce faire, vous devez modifier la variable $RecordsToInsert.

Ensuite, nous exécutons le script pour insérer les enregistrements générés dans la base de données. Pour démarrer ce processus, accédez à cette adresse - http://localhost/fcdemo/generate-random-data.php.

Finalement, vous devriez voir un message : "Enregistrements insérés ($RecordsToInsert)"

Étape 2. Préparation du squelette du site

Nous devons créer le plus pages simples pour afficher notre graphique. Quelque chose comme ça:

FusionCharts v3.2 - Démo PHP LinkedCharts