RFC GD 2.4 : Synchronisation des codecs, API orientée objet et canvas vectoriel 2D
RFC propose une refonte majeure d'ext/gd pour PHP 8.6 : synchronisation de la libgd intégrée avec le code amont, nouveaux codecs (QOI, JPEG XL, UltraHDR), API objet Gd\* en parallèle de l'interface procédurale inchangée et canvas vectoriel 2D avec rasteriser FreeType et opérateurs de composition Cairo. Discussion ouverte jusqu'au 2026-08-01.
Pierre Joye a lancé la discussion sur une RFC pour ext/gd 2.4 visant PHP 8.6, proposant une modernisation complète de l'extension d'image tout en maintenant la compatibilité rétroactive.
La proposition couvre trois domaines majeurs :
Synchronisation et amélioration des codecs. La libgd intégrée s'est éloignée de manière significative du code amont. La RFC l'aligne en testant chaque codec contre son corpus de conformité amont, corrigeant les problèmes d'appariement de couleurs et les erreurs FreeType de boîte englobante/baseline pour le texte incliné. Nouveaux codecs supportés : QOI, JPEG XL et UltraHDR. Les codecs existants gagnent des fonctionnalités manquantes : lecture/écriture d'animation GIF, support TIFF multi-pages, animation WebP complète, exposition des options PNG, options de lecture/écriture JPEG et accès en lecture/écriture aux métadonnées brutes (EXIF, XMP, ICC, IPTC). Une PR de synchronisation libgd séparée (php/php-src#22532) contenant la plupart des mises à jour de codecs a déjà fusionné dans php-src.
API orientée objet. Une nouvelle surface Gd\* OOP ajoute directement à GdImage des méthodes (scale(), rotate(), transform(), composeFrom(), saveTo(), etc.) tandis que chaque fonction procédurale existante conserve sa signature inchangée. Le code legacy fonctionne librement aux côtés des nouvelles méthodes puisque les deux opèrent sur le même objet GdImage. Chaque codec suit un pattern cohérent : méthodes Codec::fromFile/fromString/fromStream et toFile/toString/toStream, objets Info immuables, et objets valeur ReadOptions/WriteOptions conçus pour une extensibilité future sans rupture de compatibilité. Les formats animés et multi-pages obtiennent des classes Reader/Writer en streaming pour éviter de charger des images entières en mémoire.
Couche vectorielle 2D et canvas. Construite sur le rasteriser de FreeType, cette couche fournit des dégradés, l'ensemble complet des opérateurs de composition Cairo (avec sémantique correcte d'opérateur non délimité et alpha prémultiplié) et piles save/restore d'état. Elle dessine directement dans les buffers GdImage truecolor existants sans copie, permettant l'entrelacement avec les appels de dessin legacy sur la même image.
La RFC encadre le pattern de façade uniforme et la conception des objets valeur comme fondationnel pour les éléments futurs de la roadmap : les formats d'image internes prévus pour PHP 2.5/3.x (vrai ARGB 32-bit, buffers HDR virgule flottante) s'intègrent dans la même interface plutôt que forcer des APIs parallèles. Le style de méthode fluide et chaînable est conçu pour que les modes streaming/pipeline futurs ajoutent une seule méthode d'entrée alimentant la même chaîne, non une API séparée.
L'implémentation est presque complète sur https://github.com/pierrejoye/php-src-syncgd. Joye prévoit d'ajouter une méthode de quantification exposant la sélection de mode (nnquant, legacy) et créera une PR formelle avant la fin de la discussion. La période de discussion s'étend sur 14 jours jusqu'au 2026-08-01.
Tribune des lecteurs
Pas encore de contributions — lance le débat.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
En attente de ton clic …
·