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 entrées/sorties GD

Le LibGD propose un système appelé GD IO facilitant les opérations d'entrée/sortie pour la manipulation des images. GD IO repose sur des structures et des fonctions personnalisées permettant de gérer les données d'image en mémoire, dans des fichiers ou via des flux spécifiques. Cela permet de travailler avec des sources non conventionnelles, comme des données stockées en mémoire tampon, des sockets ou d'autres types de flux. L'élément central de ce système est la structure gdIOCtx, agissant comme une interface pour lire, écrire et manipuler les données des images de manière flexible.

La structure gdIOCtx est conçue pour être extensible et personnalisable. Elle contient des pointeurs vers des fonctions définissant comment les données sont lues ou écrites. Ces fonctions incluent des opérations de lecture, d'écriture, de recherche (seek) et de fermeture, permettant ainsi à l'utilisateur de créer des implémentations sur mesure adaptées à des flux spécifiques. Par exemple, un développeur peut utiliser GD IO pour lire des images à partir d'une mémoire tampon au lieu d'un fichier physique, ou pour transmettre des images directement sur un réseau via un socket.

L'une des principales utilisations de GD IO est la lecture et l'écriture des données des images dans des formats supportés par LibGD, tels que PNG, JPEG, BMP ou GIF, sans nécessiter d'accès direct au système de fichiers. Cela est particulièrement utile dans des environnements où l'écriture de fichiers est restreinte, comme les serveurs Web ou les applications embarquées. Les fonctions telles que gdImagePngCtx ou gdImageCreateFromJpegCtx utilisent GD IO pour gérer les données des images via des contextes personnalisés, permettant un contrôle granulaire sur les opérations d'entrée/sortie.

Le GD IO dans LibGD est un puissant mécanisme d'abstraction élargissant les possibilités de manipulation d'images au-delà des fichiers standards. En offrant la flexibilité d'utiliser des contextes personnalisés pour lire et écrire des données, GD IO s'adapte à une grande variété de cas d'utilisation, allant de la manipulation d'images en mémoire tampon à leur transfert via des flux réseau. Cette modularité en fait un outil précieux pour les développeurs cherchant à intégrer des fonctionnalités graphiques avancées dans leurs applications.

Le format d'image GD est un format d'image propriétaire de LibGD. Il doit être considéré comme obsolète et ne doit être utilisé qu'à des fins de développement et de test.

Structure d'un fichier image GD

Tous les nombres sont entreposés au format big-endian. Notez que toutes les sorties GD sont effectuées au format GD 2.x (à ne pas confondre avec le format GD2), mais les entrées peuvent également être au format GD 1.x.

Structure de l'entête du fichier GD 1.x

Champ Taille
width 1 mot
height 1 mot

Entête de couleur GD 1.x (palette uniquement)

Champ Taille
count 1 octet (le nombre de couleurs de palette utilisées)
transparent 1 mot (257 signale l'absence de transparence)
palette 256 x 3 octets (RGB triplets)

Structure de l'entête du fichier GD 2.x

Champ Taille
signature 1 mot («\xFF\xFE» pour truecolor, «\xFF\xFF» pour palette)
width 1 mot
height 1 mot

Entête de couleur d'image truecolor GD 2.x

Champ Taille
truecolor 1 octet (toujours «\001»)
transparent 1 dword (couleur ARGB); «\377\377\377\377» signifie qu'aucune couleur transparente n'est définie

Entête de couleur de l'image de la palette GD 2.x

Champ Taille
truecolor 1 octet (toujours «\0»)
count 1 mot (le nombre de couleurs de palette utilisées)
transparent 1 double mot (index de palette); « \377\377\377\377 » signifie qu'aucune couleur transparente n'est définie
palette 256 doubles mots (couleurs RGBA)

Données d'image

Données de pixels séquentielles ; rangée principale de haut en bas, de gauche à droite :

Liste des fonctions

Nom Description
gdImageCreateFromGd Cette fonction est utilisée pour charger une image à partir d'un fichier au format GD. Elle lit les données d'un fichier GD existant et crée une nouvelle image compatible avec LibGD. Cela permet de manipuler et de modifier les images précédemment enregistrées dans le format natif de la bibliothèque. Le format GD est principalement utilisé pour stocker des images compressées tout en maintenant leur compatibilité avec la bibliothèque.
gdImageCreateFromGdPtr Cette fonction est similaire à la précédente, mais elle charge une image à partir de données en mémoire au lieu d'un fichier. Cela est particulièrement utile lorsque les données GD sont stockées dans des flux ou des tampons en mémoire, comme lors de la manipulation d'images téléchargées ou reçues via un réseau.
gdImageCreateFromGdCtx Cette fonction permet de lire une image GD via un contexte d'entrée/sortie personnalisé (gdIOCtx). Le contexte gdIOCtx peut être utilisé pour lire des données GD provenant de sources personnalisées, comme un socket réseau ou un flux de données non standard. Cela offre une flexibilité supplémentaire en abstraction des sources d'entrée.
gdImageGd Cette fonction permet d'enregistrer une image au format GD dans un fichier. Après avoir manipulé une image avec LibGD, vous pouvez utiliser cette fonction pour la sauvegarder dans le format GD, qui est compact et efficace pour certaines utilisations internes ou pour réimporter plus tard dans LibGD.
gdImageGdPtr Cette fonction est utilisée pour obtenir une image GD sous forme de données en mémoire. Elle renvoie un pointeur vers un tampon contenant les données GD, ainsi que la taille de ce tampon. Cela permet de transmettre ou d'entreposer les données sans passer par un fichier physique.

gdImageCreateFromGd

gdImagePtr gdImageCreateFromGd(FILE *inFile);

gdImageCreateFromGd est appelé pour charger des images à partir de fichiers au format GD. Appelez gdImageCreateFromGd avec un pointeur déjà ouvert vers un fichier contenant l'image souhaitée au format de fichier GD, qui est spécifique à GD et destiné à un chargement très rapide. (Il n'est pas destiné à la compression ; pour la compression, utilisez PNG ou JPEG.)

gdImageCreateFromGd renvoie un gdImagePtr à la nouvelle image, ou NULL s'il est impossible de charger l'image (le plus souvent parce que le fichier est corrompu ou ne contient pas d'image au format GD). gdImageCreateFromGd ne ferme pas le fichier. Vous pouvez inspecter les membres sx et sy de l'image pour déterminer sa taille. L'image doit éventuellement être détruite à l'aide de gdImageDestroy.

Variantes

Paramètre

Nom Description
infile Ce paramètre permet d'indiquer le pointeur de fichier d'entrée.

Retour

Valeur Description
Pointeur Un pointeur vers la nouvelle image ou NULL si une erreur s'est produite.

Exemple

  1. gdImagePtr im;
  2. FILE *in;
  3. in = fopen("mygd.gd", "rb");
  4. im = gdImageCreateFromGd(in);
  5. fclose(in);
  6. /* ... Utiliser l'image ... */
  7. gdImageDestroy(im);

gdImageCreateFromGdPtr

gdImagePtr gdImageCreateFromGdPtr(int size, void *data);

Paramètre

Nom Description
size Ce paramètre permet d'indiquer la taille des données GD en octets.
data Ce paramètre permet d'indiquer les données GD (c'est-à-dire le contenu d'un fichier GIF).

Lit les données GD depuis la mémoire. Voir gdImageCreateFromGd.

gdImageCreateFromGdCtx

gdImagePtr gdImageCreateFromGdCtx(gdIOCtxPtr in);

Lit une image GD via une structure gdIOCtx. Voir gdImageCreateFromGd.

gdImageGd

void gdImageGd(gdImagePtr im, FILE *outFile);

Cette fonction permet d'enregistrer une image au format GD dans un fichier. Après avoir manipulé une image avec LibGD, vous pouvez utiliser cette fonction pour la sauvegarder dans le format GD, qui est compact et efficace pour certaines utilisations internes ou pour réimporter plus tard dans LibGD.

gdImageGdPtr

void * gdImageGdPtr(gdImagePtr im, int *size);

Cette fonction est utilisée pour obtenir une image GD sous forme de données en mémoire. Elle renvoie un pointeur vers un tampon contenant les données GD, ainsi que la taille de ce tampon. Cela permet de transmettre ou d'entreposer les données sans passer par un fichier physique.



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