Библиотека PHP для кодирования изображений JPEG XL. Поддерживает JPEG и PNG вход. Очень вдохновляется отличной библиотекой WebP.
Он предназначен как решение для подключаемой игры, которое охватывает наиболее распространенные варианты использования, и его можно использовать в широком спектре проектов PHP.
proc_open PHP должна быть включена, чтобы библиотека могла выполнить двоичный файл CJXL в командной строке.vips установлено и включено. Библиотека обработки изображений VIPS должна быть составлена с поддержкой JXLimagick установлено и включено. Библиотека ImageMagick должна быть скомпилирована с поддержкой 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
Выбирает, какая кодировка для использования, lossy для VARDCT и lossless для модуля. По умолчанию - lossy для ввода JPEG и lossless для ввода PNG.
quality
Качество изображения для сжатия с потерей. Диапазон качества идет от 1 до 100 . По умолчанию 85 .
effort
Управляют, сколько времени используется для кодирования изображения. Более длительное время кодирования означает меньшие файлы. Диапазон от 1 до 9 , где 1 является самым быстрым, а 9 - самый медленный. По умолчанию 7 .
progressive
Включает прогрессивное декодирование для изображения. Если веб -браузер поддерживает прогрессивный рендеринг, изображение будет загружать восприятие быстрее. В режиме VARDCT прогрессивное декодирование не сильно влияет на размер файла.
Включение прогрессивного декодирования для модульных изображений не рекомендуется, поскольку он делает полученный файл изображения значительно больше. Это может быть включено позднее в будущей версии, когда есть браузеры, которые поддерживают загрузку только часть модульного прогрессивного файла.
Значение по умолчанию true для Loansy и false для без потерь.
Существует четыре различных метода, которые вы можете использовать: двоичный, бинарник CJXL System, расширение ImageMagick и расширение VIP. Библиотека проходит через каждый из доступных методов и пытается их использовать. Если ни один из методов не доступен, будет брошено исключение.
Этот метод выполняет двоичный файл cjxl в командной строке. Это самый совместимый метод, который поддерживает наибольшее количество функций. Тем не менее, функция proc_open должна быть включена в установке PHP, поскольку библиотека выполняет двоичный файл в командной строке. Некоторые веб -хост могут отключить эту функцию по соображениям безопасности.
Примечание. Эта библиотека поставляется в комплекте со статически скомпилированной версией бинарного файла cjxl для систем Linux, MacOS и Windows. Бинарник связан со всеми необходимыми библиотеками, что означает, что он будет работать из коробки без необходимости установить какие -либо дополнительные зависимости.
Это то же самое, что и предыдущий метод, но он выполняет двоичный файл cjxl из системы системы. Это означает, что вам нужно установить JPEG XL, используя диспетчер пакетов системы, такой как Homebrew или построить JPEG XL из Source и добавить двоичный файл cjxl к переменной вашего пути.
В этом методе используется библиотека ImageMagick и ее PHP Extension Imagick. Тем не менее, ImageMagick должен быть построен с помощью делегата JXL. На практике это означает, что вам нужно будет установить библиотеку LIBJXL на сервере. Тогда вам нужно будет создать Imagemagick из источника с опцией --with-jxl=yes . Наконец, вам нужно будет установить расширение Imagick PHP. Расширение ImageMagick не поддерживает прогрессивную кодировку в то время. Для примера, как скомпилировать ImageMagick с поддержкой JPEG XL, см. Этот DockerFile.
Этот метод использует библиотеку VIPS и ее расширение PHP. Тем не менее, VIPS необходимо построить с помощью поддержки JXL. На практике это означает, что вам нужно будет установить библиотеку LIBJXL на сервере. Тогда вам нужно будет построить VIP из источника. Наконец, вам нужно будет установить расширение VIPS PHP. Расширение VIPS не поддерживает прогрессивную кодировку в то время. Для примера, как компилировать VIP с поддержкой JPEG XL, см. Этот DockerFile.
Кроме того, расширение VIPS, вам также необходимо установить библиотеку PHP jcupitt/vips в свой проект. Кроме jpeg-xl-encode
composer require jcupitt/vips
Грань
Для получения подробной информации о лицензии см. Индивидуальные заголовки файлов и .reuse/dep5 .
Этот проект находится в активной разработке, и он имеет ряд функций, которые в настоящее время разрабатываются.