用于编码JPEG XL图像的PHP库。支持JPEG和PNG输入。非常受到出色的WebP转换库的启发。
它旨在用作覆盖最常见用例的插件解决方案,可用于各种PHP项目。
proc_open PHP功能,以便库可以在命令行上执行CJXL二进制文件。vips PHP扩展名。 VIP图像处理库必须与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
启用图像的渐进解码。如果Web浏览器支持渐进式渲染,则图像将更快地下载。在VARDCT模式下,渐进解码不会太大影响文件大小。
不建议对模块化图像启用渐进解码,因为它使所得图像文件明显更大。可以在将来版本的以后的日期启用它,而浏览器仅支持下载模块化渐进式文件的一部分。
默认值对于有损而言是true ,对于无损false 。
您可以使用四种不同的方法:CJXL二进制,CJXL系统二进制,ImageMagick扩展和VIP扩展。该库通过每种可用方法,并尝试使用它们。如果没有任何方法可用,则将引发异常。
此方法在命令行上执行cjxl二进制。这是最兼容的方法,它支持最大的功能。但是,由于库在命令行上执行二进制文件,因此需要在PHP安装中启用proc_open函数。出于安全原因,某些Web主机可能会禁用此功能。
注意:该库与Linux,MacOS和Windows系统的cjxl二进制文件的静态编译版本捆绑在一起。二进制文件与所有必需的库捆绑在一起,这意味着它可以开箱即用,而无需安装任何其他依赖项。
这与以前的方法相同,但它从系统路径执行cjxl二进制。这意味着您需要使用System Package Manager(例如HomeBrowrew)或从源构建JPEG XL,然后将cjxl二进制添加到您的路径变量中。
此方法使用ImageMagick库及其PHP扩展Imagick。但是,ImageMagick需要与JXL代表建造。实际上,这意味着您需要在服务器上安装LibJXL库。然后,您将需要从源构建ImageMagick,并使用选项--with-jxl=yes 。最后,您需要安装Imagick PHP扩展名。 ImageMagick扩展不支持当时的渐进编码。有关如何用JPEG XL支持编译成像量的示例,请参见此Dockerfile。
此方法使用VIPS库及其PHP扩展名。但是,必须在JXL支持下建造VIP。实际上,这意味着您需要在服务器上安装LibJXL库。然后,您将需要从源构建VIP。最后,您需要安装VIP PHP扩展名。 VIP扩展时不支持当时的渐进编码。有关如何使用JPEG XL支持编译VIP的示例,请参见此Dockerfile。
此外,VIPS扩展程序还需要在项目中安装jcupitt/vips PHP库, jpeg-xl-encode ,您可以使用以下命令来执行此操作:
composer require jcupitt/vips
麻省理工学院。
有关详细的许可信息,请参见单个文件标头和.reuse/dep5 。
该项目正在积极开发中,并且目前正在开发许多功能。