The Daily Commit · Ressort-Ausgabe Titelseite PHP AI Dev EN DE FR ES

The Php Times

RFC-Watch — Ökosystem

GD 2.4 RFC: Codec-Synchronisierung, objektorientierte API und 2D-Vektorgrafik-Canvas

PHP INTERNALS ([RFC]/[VOTE]), 18. Juli 2026 kuratiert von Heiko

RFC schlägt umfassende Überholung von ext/gd für PHP 8.6 vor: Synchronisierung der gebündelten libgd mit Upstream, neue Codecs (QOI, JPEG XL, UltraHDR), objektorientierte Gd\*-API neben unveränderter prozeduraler Schnittstelle und 2D-Vektor-Canvas mit FreeType-Rasterizer und Cairo-Compositing-Operatoren. Diskussion bis 2026-08-01 offen.

Pierre Joye hat die Diskussion über einen RFC für ext/gd 2.4 (zielend auf PHP 8.6) eingeleitet und schlägt eine umfassende Modernisierung der Image-Extension vor, während vollständige Abwärtskompatibilität gewahrt bleibt.

Der Vorschlag behandelt drei Hauptbereiche:

Codec-Synchronisierung und Erweiterung. Die gebündelte libgd ist erheblich vom Upstream abgewichen. Der RFC bringt sie wieder in Einklang, indem jeder Codec gegen sein Upstream-Compliance-Corpus geprüft wird, wobei Farbabgleich-Probleme und FreeType-Grenzrahmen-/Baseline-Fehler für abgewinkelte Texte behoben werden. Neue unterstützte Codecs: QOI, JPEG XL und UltraHDR. Bestehende Codecs erhalten fehlende Funktionalität: GIF-Animation Lesen/Schreiben, mehrseitiges TIFF, vollständige WebP-Animation, PNG-Optionen, JPEG-Lese-/Schreib-Optionen und Metadaten-Lese-/Schreib-Zugriff (EXIF, XMP, ICC, IPTC). Ein separater libgd-Synchronisierungs-PR (php/php-src#22532) mit den meisten Codec-Updates ist bereits in php-src gemerged.

Objektorientierte API. Eine neue Gd\*-OOP-Oberfläche erweitert GdImage um Methoden (scale(), rotate(), transform(), composeFrom(), saveTo() etc.), während alle existierenden prozeduralen Funktionen ihre Signaturen unverändert beibehalten. Legacy-Code funktioniert frei neben neuen Methoden, da beide auf dem gleichen GdImage-Objekt operieren. Jeder Codec folgt einem einheitlichen Muster: Codec::fromFile/fromString/fromStream und toFile/toString/toStream Methoden, unveränderliche Info-Objekte und ReadOptions/WriteOptions Wert-Objekte für zukünftige Erweiterbarkeit ohne Breaking Changes. Animations- und mehrseitige Formate erhalten Streaming-Reader/Writer-Klassen statt alles in den Speicher zu laden.

2D-Vektor- und Canvas-Layer. Aufbauend auf FreeType's Rasterizer bietet dieser Layer Verläufe, den vollständigen Cairo-Compositing-Operator-Satz (mit korrektem unbegrenzt-Operator und vorvervielfachten Alpha-Semantiken) sowie Save/Restore-State-Stacks. Er zeichnet direkt in bestehende Truecolor-GdImage-Buffer ohne Kopieren, ermöglicht Vermischung mit Legacy-Draw-Aufrufen auf dem gleichen Image.

Der RFC sieht das einheitliche Façade-Muster und Wert-Objekt-Design als Grundlage für zukünftige Roadmap-Punkte: geplante interne Bildformate für PHP 2.5/3.x (echtes 32-Bit-ARGB, Floating-Point-HDR-Buffer) passen sich die gleiche Schnittstelle ein, anstatt parallele APIs zu erzwingen. Der flüssige, verkettbare Methoden-Stil ist so gestaltet, dass zukünftige Streaming-/Pipeline-Modi eine einzelne Einstiegsmethode die gleiche Kette speisen können, nicht eine separate API.

Die Implementierung ist nahezu abgeschlossen unter https://github.com/pierrejoye/php-src-syncgd. Joye plant, eine Quantisierungsmethode zur Modusauswahl (nnquant, legacy) hinzuzufügen und wird einen formalen PR vor Diskussionsende erstellen. Die Diskussionsfrist läuft 14 Tage bis 2026-08-01.

Originalquelle lesen (Englisch) ↗

Artikel bewerten: 0

Leserforum

Noch keine Beiträge — eröffne die Debatte.

← Ökosystem — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Bildschirm-Ausgabe · Impressum · Datenschutz