Una biblioteca PHP para codificar imágenes JPEG XL. Admite la entrada JPEG y PNG. Muy inspirado en la excelente biblioteca WebP Convert.
Se pretende como una solución plug-and-play que cubre los casos de uso más comunes y puede usarse en una amplia variedad de proyectos de PHP.
proc_open PHP debe habilitarse para que la biblioteca pueda ejecutar el binario CJXL en la línea de comando.vips PHP está instalada y habilitada. La biblioteca de procesamiento de imágenes VIP debe compilarse con soporte JXLimagick está instalada y habilitada. ImageMagick Library debe ser compilada con soporte JXL composer require joppuyo/jpeg-xl-encode
require __DIR__ . ' /vendor/autoload.php ' ;
$ source = ' /absolute/path/to/source.jpeg ' ;
$ destination = ' /absolute/path/to/destination.jxl ' ;
$ options = [
' encoding ' => ' lossy ' ,
' quality ' => 80 ,
];
try {
NPX JpegXlEncode Encoder:: encode ( $ source , $ destination , $ options );
} catch ( Exception $ exception ) {
error_log ( ' Whoops, something went wrong. ' );
} encoding
Selecciona qué codificación usar, lossy para VARDCT y lossless para modular. El valor predeterminado es lossy para la entrada JPEG y lossless para la entrada PNG.
quality
Calidad de imagen para la compresión con pérdida. El rango de calidad va de 1 a 100 . El valor predeterminado es 85 .
effort
Controla cuánto tiempo se usa para la codificación de imágenes. El tiempo de codificación más largo significa archivos más pequeños. El rango es de 1 a 9 , donde 1 es el más rápido y 9 es el más lento. El valor predeterminado es 7 .
progressive
Habilita la decodificación progresiva para la imagen. Si un navegador web admite una representación progresiva, la imagen se descargará perceptualmente más rápido. En el modo VARDCT, la decodificación progresiva no afecta mucho el tamaño del archivo.
No se recomienda habilitar la decodificación progresiva para imágenes modulares, ya que hace que el archivo de imagen resultante sea significativamente mayor. Podría habilitarse en una fecha posterior en una versión futura cuando hay navegadores que admiten descargar solo parte de un archivo progresivo modular.
El valor predeterminado es true para los pérdidas y false para la pérdida de pérdidas.
Hay cuatro métodos diferentes que puede usar: CJXL Binary, CJXL System Binary, ImageMagick Extension y VIPS Extension. La biblioteca pasa por cada uno de los métodos disponibles y trata de usarlos. Si no hay ninguno de los métodos disponibles, se lanzará una excepción.
Este método ejecuta el binario cjxl en la línea de comando. Es el método más compatible y admite la mayoría de las funciones. Sin embargo, la función proc_open debe habilitarse en la instalación de PHP ya que la biblioteca ejecuta el binario en la línea de comando. Algunos hosts web pueden deshabilitar esta función por razones de seguridad.
Nota: Esta biblioteca viene inclinada con la versión compilada estáticamente del binario cjxl para los sistemas Linux, MacOS y Windows. El binario se incluye con todas las bibliotecas requeridas, lo que significa que funcionará fuera de la caja sin la necesidad de instalar dependencias adicionales.
Esto es lo mismo que el método anterior, pero ejecuta el binario cjxl desde la ruta del sistema. Esto significa que debe instalar JPEG XL usando el Administrador de paquetes de su sistema como HomeBrew o Build JPEG XL desde la fuente y agregar el binario cjxl a su variable de ruta.
Este método utiliza la biblioteca ImageMagick y su extensión PHP Imagick. Sin embargo, ImageMagick debe construirse con JXL Delegate. En la práctica, esto significa que deberá instalar la biblioteca libjxl en el servidor. Entonces necesitará construir ImageMagick desde la fuente con la opción --with-jxl=yes . Por último, deberá instalar la extensión de Imagick PHP. La extensión de ImageMagick no admite la codificación progresiva en ese momento. Para obtener un ejemplo de cómo compilar ImageMagick con el soporte JPEG XL, consulte este DockerFile.
Este método utiliza la biblioteca VIP y su extensión PHP. Sin embargo, los VIP deben construirse con soporte JXL. En la práctica, esto significa que deberá instalar la biblioteca libjxl en el servidor. Entonces necesitará construir VIP a partir de la fuente. Por último, deberá instalar la extensión VIP PHP. La extensión VIP no admite la codificación progresiva en ese momento. Para obtener un ejemplo de cómo compilar VIP con el soporte JPEG XL, consulte este DockerFile.
Además de la extensión VIPS, también deberá instalar la biblioteca jcupitt/vips PHP en su proyecto, además de jpeg-xl-encode , puede hacerlo utilizando el siguiente comando:
composer require jcupitt/vips
Mit.
Para obtener información detallada de la licencia, consulte los encabezados de archivo individuales y .reuse/dep5 .
Este proyecto está en desarrollo activo y tiene una serie de características actualmente en desarrollo.