The Daily Commit · Edición de sección Portada PHP AI Dev EN DE FR ES

The Php Times

RFC Watch — Ecosistema

RFC GD 2.4: Sincronización de códecs, API orientada a objetos y canvas vectorial 2D

PHP INTERNALS ([RFC]/[VOTE]), 18 de julio de 2026 seleccionado por Heiko

RFC propone una revisión mayor de ext/gd para PHP 8.6: sincronización de la libgd incluida con el código upstream, nuevos códecs (QOI, JPEG XL, UltraHDR), API orientada a objetos Gd\* junto a la interfaz procedimental sin cambios y canvas vectorial 2D con rasterizador FreeType y operadores de composición Cairo. Discusión abierta hasta 2026-08-01.

Pierre Joye ha iniciado la discusión sobre una RFC para ext/gd 2.4 dirigida a PHP 8.6, proponiendo una modernización exhaustiva de la extensión de imagen manteniendo compatibilidad hacia atrás.

La propuesta cubre tres áreas principales:

Sincronización y mejora de códecs. La libgd incluida se ha desviado significativamente del código upstream. La RFC la alinea probando cada códec contra su corpus de conformidad upstream, corrigiendo problemas de coincidencia de colores y errores de caja delimitadora/baseline de FreeType para texto angulado. Nuevos códecs soportados: QOI, JPEG XL y UltraHDR. Los códecs existentes ganan funcionalidad faltante: lectura/escritura de animación GIF, soporte TIFF multipágina, animación WebP completa, exposición de opciones PNG, opciones de lectura/escritura JPEG y acceso de lectura/escritura a metadatos sin procesar (EXIF, XMP, ICC, IPTC). Un PR de sincronización libgd separado (php/php-src#22532) que contiene la mayoría de actualizaciones de códecs ya se ha fusionado en php-src.

API orientada a objetos. Una nueva superficie Gd\* OOP agrega métodos directamente a GdImage (scale(), rotate(), transform(), composeFrom(), saveTo(), etc.) mientras que cada función procedimental existente mantiene su firma sin cambios. El código legacy funciona libremente junto con nuevos métodos ya que ambos operan sobre el mismo objeto GdImage. Cada códec sigue un patrón consistente: métodos Codec::fromFile/fromString/fromStream y toFile/toString/toStream, objetos Info inmutables y objetos valor ReadOptions/WriteOptions diseñados para extensibilidad futura sin romper cambios. Los formatos animados y multipágina obtienen clases Reader/Writer en streaming para evitar cargar imágenes completas en memoria.

Capa vectorial 2D y canvas. Construida sobre el rasterizador de FreeType, esta capa proporciona degradados, el conjunto completo de operadores de composición Cairo (con semántica correcta de operador no acotado y alfa premultiplicado) y pilas de guardado/restauración de estado. Dibuja directamente en buffers GdImage truecolor existentes sin copia, permitiendo entrelazamiento con llamadas de dibujo legacy en la misma imagen.

La RFC encuadra el patrón de fachada uniforme y el diseño de objetos valor como fundamental para elementos futuros de la hoja de ruta: los formatos de imagen internos planificados para PHP 2.5/3.x (ARGB verdadero de 32 bits, buffers HDR en punto flotante) se ajustan a la misma interfaz en lugar de forzar APIs paralelas. El estilo de método fluido y encadenable está diseñado para que los modos streaming/pipeline futuros agreguen un único método de entrada alimentando la misma cadena, no una API separada.

La implementación está casi completa en https://github.com/pierrejoye/php-src-syncgd. Joye planea agregar un método de cuantización exponiendo selección de modo (nnquant, legacy) y creará un PR formal antes del final de la discusión. El período de discusión se extiende por 14 días hasta 2026-08-01.

Leer la fuente original (en inglés) ↗

Valora este artículo: 0

Tribuna de lectores

Aún no hay aportaciones — abre el debate.

← Ecosistema — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Edición de pantalla · Información legal · Política de privacidad