用於編碼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 。
該項目正在積極開發中,並且目前正在開發許多功能。