JPEG XL 이미지를 인코딩하기위한 PHP 라이브러리. JPEG 및 PNG 입력을 지원합니다. 우수한 Webp Convert Library에서 영감을 얻었습니다.
가장 일반적인 사용 사례를 다루는 플러그 앤 플레이 솔루션으로 고안되며 다양한 PHP 프로젝트에 사용할 수 있습니다.
proc_open PHP 함수를 활성화해야합니다.vips PHP 확장자가 설치되어 활성화됩니다. VIPS 이미지 처리 라이브러리는 JXL 지원으로 컴파일해야합니다.imagick PHP 확장이 설치되어 활성화됩니다. 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
사용할 인코딩, vardct의 lossy 및 모듈 식의 lossless 선택합니다. 기본값은 JPEG 입력의 경우 lossy 되고 PNG 입력의 경우 lossless .
quality
손실 압축의 이미지 품질. 품질 범위는 1 에서 100 으로 이동합니다. 기본값은 85 입니다.
effort
이미지 인코딩에 얼마나 많은 시간이 사용되는지 제어합니다. 인코딩 시간이 길은 파일이 작은 것을 의미합니다. 범위는 1 ~ 9 이며 여기에서 1 은 가장 빠르며 9 가장 느립니다. 기본값은 7 입니다.
progressive
이미지의 점진적 디코딩을 활성화합니다. 웹 브라우저가 프로그레시브 렌더링을 지원하면 이미지가 지각 적으로 더 빠르게 다운로드됩니다. Vardct 모드에서는 프로그레시브 디코딩이 파일 크기에 큰 영향을 미치지 않습니다.
모듈 식 이미지에 대한 점진적인 디코딩 활성화는 결과 이미지 파일을 크게 더 크게 만들기 때문에 권장되지 않습니다. 모듈 식 진행 파일의 일부만 다운로드하는 것을 지원하는 브라우저가있을 때 나중에 향후 버전에서 활성화 될 수 있습니다.
기본값은 Lossy의 경우 true 이며 무손실의 경우 false .
CJXL 바이너리, CJXL 시스템 바이너리, imagemagick 확장 및 VIPS 확장자의 네 가지 방법이 있습니다. 도서관은 사용 가능한 각 방법을 통해 사용하여 사용하려고합니다. 방법 중 어느 것도 사용할 수 없으면 예외가 발생합니다.
이 메소드는 명령 줄에서 cjxl 바이너리를 실행합니다. 가장 호환되는 방법이며 가장 많은 기능을 지원합니다. 그러나 라이브러리가 명령 줄에서 바이너리를 실행하므로 PHP 설치에서 proc_open 함수를 활성화해야합니다. 일부 웹 호스트는 보안상의 이유로이 기능을 비활성화 할 수 있습니다.
참고 :이 라이브러리는 Linux, MacOS 및 Windows 시스템 용 cjxl 바이너리의 정적으로 컴파일 된 버전과 함께 제공됩니다. 바이너리에는 필요한 모든 라이브러리가 번들로 제공되므로 추가 종속성을 설치할 필요없이 상자 밖으로 작동합니다.
이것은 이전 방법과 동일하지만 시스템 경로에서 cjxl 바이너리를 실행합니다. 즉, Homebrew와 같은 시스템 패키지 관리자를 사용하여 JPEG XL을 설치하거나 소스에서 JPEG XL을 빌드하고 경로 변수에 cjxl 바이너리를 추가해야합니다.
이 방법은 Imagemagick 라이브러리와 PHP Extension Imagick을 사용합니다. 그러나 Imagemagick은 JXL 대의원으로 구축해야합니다. 실제로 이것은 서버에 libjxl 라이브러리를 설치해야한다는 것을 의미합니다. 그런 다음 --with-jxl=yes 을 사용하여 소스에서 imagemagick을 구축해야합니다. 마지막으로 Imagick PHP 확장을 설치해야합니다. Imagemagick 확장자는 당시 프로그레시브 인코딩을 지원하지 않습니다. JPEG XL 지원으로 Imagemagick을 컴파일하는 방법은이 dockerfile을 참조하십시오.
이 방법은 VIPS 라이브러리와 PHP 확장을 사용합니다. 그러나 VIP는 JXL 지원으로 구축해야합니다. 실제로 이것은 서버에 libjxl 라이브러리를 설치해야한다는 것을 의미합니다. 그런 다음 소스에서 VIP를 빌드해야합니다. 마지막으로 VIPS PHP 확장을 설치해야합니다. VIPS Extension은 당시 프로그레시브 인코딩을 지원하지 않습니다. JPEG XL 지원으로 VIP를 컴파일하는 방법은이 dockerfile을 참조하십시오.
또한 VIPS Extension은 프로젝트에 jcupitt/vips PHP 라이브러리를 설치해야합니다. jpeg-xl-encode 다음 명령을 사용하여이를 수행 할 수 있습니다.
composer require jcupitt/vips
MIT.
자세한 라이센스 정보는 개별 파일 헤더 및 .reuse/dep5 참조하십시오.
이 프로젝트는 활발한 개발 중이며 현재 개발중인 여러 기능이 있습니다.