Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les fichiers d'entête de bibliothèque
Les fichiers de code source
Référence des fonctions
Les premiers pas
Les formats d'image
La quantification des couleurs
Le recadrage d'image
Le rendu des polices de caractères FreeType dans LibGD
Les filtres d'image
Polices de caractères intégrées
Les matrices
Les transformations
Les entrées/sorties AVIF
Les entrées/sorties BMP
Les entrées/sorties GD
Les entrées/sorties GD2
Les entrées GIF
Les sorties GIF
Les entrées/sorties HEIF
Les entrées/sorties JPEG
Les entrées/sorties PNG
Les entrées TGA
Les entrées/sorties TIFF
Les entrées/sorties WBMP
Les entrées/sorties WebP
Les entrées/sorties XBM
Les entrées XPM
Police de caractères géante
Grande police de caractères
Police de caractères moyennement grasse
Petite police de caractères
Très petite police de caractères
Préface
Notes légales
Dictionnaire
Recherche

Les premiers pas

Le LibGD est une bibliothèque graphique. Elle permet à votre code de dessiner rapidement des images complètes avec des lignes, des arcs, du texte, plusieurs couleurs, de copier et coller à partir d'autres images et de remplir les champs, et d'écrire le résultat sous forme de fichier PNG ou JPEG. Ceci est particulièrement utile dans les applications World Wide Web, où PNG et JPEG sont deux des formats acceptés pour les images en ligne par la plupart des navigateurs.

Le LibGD n'est pas un programme de dessin. Si vous cherchez un programme de dessin, vous cherchez au mauvais endroit. Si vous n'êtes pas un programmeur, vous cherchez au mauvais endroit, à moins que vous n'installiez une bibliothèque requise pour exécuter une application.

Le LibGD ne fournit pas toutes les opérations graphiques souhaitables possibles. Il n'est ni nécessaire ni souhaitable que LibGD devienne un paquet graphique de base, mais la version 2.0 inclut les fonctionnalités les plus fréquemment demandées, notamment les images en vraies couleurs et en palette, le rééchantillonnage (redimensionnement fluide des images en vraies couleurs),...

Installation et configuration

Avant d'utiliser LibGD, vous devez installer la bibliothèque sur votre système. Selon votre environnement de développement, cela peut se faire avec des gestionnaires de paquets :

Notions de base sur LibGD : Utiliser gd dans votre programme

Le LibGD vous permet de créer des images PNG ou JPEG à la volée. Pour utiliser LibGD dans votre programme, incluez le fichier gd.h et créez un lien avec la bibliothèque gd et les autres bibliothèques requises; la syntaxe pour la plupart des versions d'Unix est :

-lgd -lpng -lz -ljpeg -lfreetype -lm

En supposant que toutes ces bibliothèques soient disponibles.

Si vous souhaitez utiliser les polices de caractères simples fournies, incluez gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h et/ou gdfontg.h. Pour des résultats plus impressionnants, installez FreeType 2.x et utilisez la fonction gdImageStringFT. Si vous n'utilisez pas le Makefile fourni et/ou une approche basée sur une bibliothèque, assurez-vous d'inclure également les modules sources dans votre projet.

Voici un court exemple de programme. (Pour un exemple plus avancé, voir gddemo.c, inclus dans la distribution. gddemo.c n'est pas le même programme; il présente des fonctionnalités supplémentaires !)

  1. /* Intégrer les fonctions de la bibliothèque GD */
  2. #include "gd.h"
  3.  
  4. /* Intégrez les entrées/sorties standard afin que nous puissions générer le PNG dans un fichier */
  5. #include <stdio.h>
  6.  
  7. int main() {
  8.   /* Déclarer l'image */
  9.   gdImagePtr im;
  10.   /* Déclarer les fichiers de sortie */
  11.   FILE *pngout, *jpegout;
  12.   /* Déclarer les index de couleur */
  13.   int black;
  14.   int white;
  15.  
  16.   /* Allouer l'image : 64 pixels de large sur 64 pixels de haut */
  17.   im = gdImageCreate(64, 64);
  18.  
  19.   /* Attribuez la couleur noire (rouge, vert et bleu au minimum). Comme il s'agit de la première couleur d'une nouvelle image, elle sera la couleur d'arrière-plan. */
  20.   black = gdImageColorAllocate(im, 0, 0, 0);
  21.  
  22.   /* Attribuer la couleur blanche (rouge, vert et bleu tous au maximum). */
  23.   white = gdImageColorAllocate(im, 255, 255, 255);
  24.  
  25.   /* Tracez une ligne du coin supérieur gauche au coin inférieur droit, en utilisant l'index de couleur blanc. */
  26.   gdImageLine(im, 0, 0, 63, 63, white);
  27.  
  28.   /* Ouvrir un fichier en écriture. «wb» signifie «écrire binaire», important sous MSDOS, inoffensif sous Unix. */
  29.   pngout = fopen("test.png", "wb");
  30.  
  31.   /* Faites la même chose pour un fichier au format JPEG. */
  32.   jpegout = fopen("test.jpg", "wb");
  33.  
  34.   /* Exportez l'image vers le fichier disque au format PNG. */
  35.   gdImagePng(im, pngout);
  36.  
  37.   /* Générez la même image au format JPEG, en utilisant le paramètre de qualité JPEG par défaut. */
  38.   gdImageJpeg(im, jpegout, -1);
  39.  
  40.   /* Fermez les fichiers. */
  41.   fclose(pngout);
  42.   fclose(jpegout);
  43.  
  44.   /* Détruire l'image en mémoire. */
  45.   gdImageDestroy(im);
  46. }

Initialisation d'une image

Pour créer ou charger une image, LibGD offre plusieurs fonctions. Pour créer une nouvelle image vide :

  1. gdImagePtr image = gdImageCreateTrueColor(800, 600);

Ici, une image de 800x600 pixels en couleurs vraies (TrueColor) est créée.

Pour charger une image existante :

  1. FILE *file = fopen("example.png", "rb");
  2. gdImagePtr image = gdImageCreateFromPng(file);
  3. fclose(file);

Manipulation des graphiques

LibGD permet de dessiner des formes, d'ajouter du texte ou d'appliquer des transformations. Dessiner une ligne :

  1. gdImageLine(image, 10, 10, 200, 200, gdImageColorAllocate(image, 255, 0, 0));

Cette ligne rouge va de (10, 10) à (200, 200).

Ajouter du texte avec une police de caractères TrueType :

  1. char *fontPath = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
  2. char *text = "Bonjour LibGD!";
  3. gdImageStringFT(image, NULL, gdImageColorAllocate(image, 0, 0, 255), fontPath, 24, 0, 100, 100, text);

Exporter l'image

Une fois vos modifications terminées, vous pouvez sauvegarder l'image. Exporter au format PNG :

  1. FILE *outputFile = fopen("output.png", "wb");
  2. gdImagePng(image, outputFile);
  3. fclose(outputFile);

Les autres formats : LibGD prend également en charge JPEG, GIF et WebP.

Libération des ressources

N'oubliez pas de libérer les ressources pour éviter les fuites de mémoire :

  1. gdImageDestroy(image);


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mardi, le 8 octobre 2024