Une bibliothèque PHP pour coder des images JPEG XL. Prend en charge l'entrée JPEG et PNG. Inspiré par l'excellente bibliothèque Webp Convert.
Il est destiné à une solution de plug-and-play qui couvre les cas d'utilisation les plus courants et peut être utilisé dans une grande variété de projets PHP.
proc_open doit être activée afin que la bibliothèque puisse exécuter le binaire CJXL sur la ligne de commande.vips PHP est installée et activée. La bibliothèque de traitement d'image VIPS doit être compilée avec le support JXLimagick est installée et activée. La bibliothèque ImageMagick doit être compilée avec le support 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
Sélectionne le codage à utiliser, lossy pour VARDCT et lossless pour modulaire. La valeur par défaut est lossy pour l'entrée JPEG et lossless pour l'entrée PNG.
quality
Qualité d'image pour compression avec perte. La plage de qualité va de 1 à 100 . La valeur par défaut est 85 .
effort
Contrôle la quantité de temps utilisée pour l'encodage d'images. Le temps d'encodage plus long signifie des fichiers plus petits. La plage est de 1 à 9 où 1 est le plus rapide et 9 est le plus lent. La valeur par défaut est 7 .
progressive
Permet le décodage progressif pour l'image. Si un navigateur Web prend en charge le rendu progressif, l'image téléchargera plus rapidement perceptuellement. En mode VARDCT, le décodage progressif n'affecte pas beaucoup la taille du fichier.
L'activation du décodage progressif pour les images modulaires n'est pas recommandée car elle rend le fichier image résultant beaucoup plus grand. Il pourrait être activé à une date ultérieure dans une future version lorsqu'il y a des navigateurs qui prennent en charge le téléchargement uniquement une partie d'un fichier progressif modulaire.
La valeur par défaut est true pour Lossy et false pour Lossless.
Il existe quatre méthodes différentes que vous pouvez utiliser: CJXL Binary, CJXL System Binary, ImageMagick Extension et VIPS Extension. La bibliothèque passe par chacune des méthodes disponibles et essaie de les utiliser. Si aucune des méthodes n'est disponible, une exception sera lancée.
Cette méthode exécute le binaire cjxl sur la ligne de commande. C'est la méthode la plus compatible et elle prend en charge le plus de fonctionnalités. Cependant, la fonction proc_open doit être activée dans l'installation PHP puisque la bibliothèque exécute le binaire sur la ligne de commande. Certains hôtes Web peuvent désactiver cette fonction pour des raisons de sécurité.
Remarque: Cette bibliothèque est livrée avec une version statiquement compilée du binaire cjxl pour les systèmes Linux, MacOS et Windows. Le binaire est emballé avec toutes les bibliothèques requises, ce qui signifie qu'elle fonctionnera hors de la boîte sans avoir besoin d'installer de dépendances supplémentaires.
C'est la même chose que la méthode précédente, mais il exécute le binaire cjxl à partir du chemin du système. Cela signifie que vous devez installer JPEG XL à l'aide de votre gestionnaire de packages système comme Homebrew ou construire JPEG XL à partir de la source et ajouter le binaire cjxl à votre variable de chemin.
Cette méthode utilise la bibliothèque ImageMagick et son Imagick d'extension PHP. Cependant, ImageMagick doit être construit avec le délégué JXL. En pratique, cela signifie que vous devrez installer la bibliothèque libjxl sur le serveur. Ensuite, vous devrez construire ImageMagick à partir de la source avec l'option --with-jxl=yes . Enfin, vous devrez installer l'extension PHP Imagrick. L'extension ImageMagick ne prend pas en charge le codage progressif à l'époque. Pour un exemple comment compiler ImageMagick avec le support JPEG XL, consultez ce dockerfile.
Cette méthode utilise la bibliothèque VIPS et son extension PHP. Cependant, les VIP doivent être construits avec le support JXL. En pratique, cela signifie que vous devrez installer la bibliothèque libjxl sur le serveur. Ensuite, vous devrez construire des VIP à partir de la source. Enfin, vous devrez installer l'extension VIPS PHP. L'extension VIPS ne prend pas en charge le codage progressif à l'époque. Pour un exemple comment compiler les VIP avec le support JPEG XL, consultez ce dockerfile.
En outre l'extension VIPS, vous devrez également installer la bibliothèque jcupitt/vips PHP dans votre projet en plus jpeg-xl-encode , vous pouvez le faire en utilisant la commande suivante:
composer require jcupitt/vips
Mit.
Pour des informations détaillées sur la licence, consultez les en-têtes de fichiers individuels et .reuse/dep5 .
Ce projet est en cours de développement actif et a un certain nombre de fonctionnalités actuellement en cours de développement.