JPEG XL画像をエンコードするためのPHPライブラリ。 JPEGおよびPNG入力をサポートします。優れたWebp Convert Libraryに非常に触発されました。
これは、最も一般的なユースケースをカバーするプラグアンドプレイソリューションとして意図されており、さまざまなPHPプロジェクトで使用できます。
proc_open PHP関数を有効にする必要があり、ライブラリがコマンドラインでCJXLバイナリを実行できるようにします。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
画像のプログレッシブデコードを有効にします。 Webブラウザーがプログレッシブレンダリングをサポートする場合、画像は知覚的により速くダウンロードされます。 VARDCTモードでは、プログレッシブデコードはファイルサイズにあまり影響しません。
結果の画像ファイルを大幅に大きくするため、モジュラー画像のプログレッシブデコードを有効にすることは推奨されません。モジュラープログレッシブファイルの一部のみのダウンロードをサポートするブラウザがある場合、将来のバージョンの後日に有効にすることができます。
デフォルト値は、Losyの場合はtrue 、Losslessにはfalse 。
使用できる4つの異なる方法があります:CJXLバイナリ、CJXLシステムバイナリ、ImageMagick拡張機能、VIPS拡張。ライブラリは、利用可能な各方法を通過し、それらを使用しようとします。いずれも利用できない場合、例外がスローされます。
このメソッドは、コマンドラインでcjxlバイナリを実行します。これは最も互換性のある方法であり、最も機能をサポートしています。ただし、ライブラリはコマンドラインでバイナリを実行するため、PHPインストールでproc_open関数を有効にする必要があります。一部のWebホストは、セキュリティ上の理由でこの機能を無効にする場合があります。
注:このライブラリには、Linux、MacOS、およびWindowsシステム用のcjxlバイナリの静的なコンパイルされたバージョンがバンドルされています。バイナリには、必要なすべてのライブラリがバンドルされているため、追加の依存関係をインストールする必要なく、箱から出してしまいます。
これは以前の方法と同じですが、システムパスからcjxlバイナリを実行します。これは、HomeBrewなどのシステムパッケージマネージャーを使用してJPEG XLをインストールするか、ソースからJPEG XLをビルドし、 cjxlバイナリをパス変数に追加する必要があることを意味します。
この方法では、ImageMagickライブラリとそのPHP拡張Imagicickを使用します。ただし、ImageMagickはJXLデリゲートで構築する必要があります。実際には、これはサーバーにLIBJXLライブラリをインストールする必要があることを意味します。次に、オプション--with-jxl=yesを使用して、ソースからimagemagickを構築する必要があります。最後に、Imagick PHP拡張機能をインストールする必要があります。 ImageMagick拡張機能は、当時のプログレッシブエンコードをサポートしていません。 JPEG XLサポートを使用してImageMagickをコンパイルする方法の例については、このDockerFileを参照してください。
この方法では、VIPSライブラリとそのPHP拡張機能を使用します。ただし、VIPはJXLサポートで構築する必要があります。実際には、これはサーバーにLIBJXLライブラリをインストールする必要があることを意味します。その後、ソースからVIPを構築する必要があります。最後に、VIPS PHP拡張機能をインストールする必要があります。 VIPS拡張は、当時のプログレッシブエンコードをサポートしていません。 JPEG XLサポートを使用してVIPをコンパイルする方法の例については、このDockerFileを参照してください。
さらに、VIPS拡張機能に加えて、 jpeg-xl-encodeに加えて、プロジェクトにjcupitt/vips PHPライブラリをインストールする必要があります。次のコマンドを使用してこれを行うことができます。
composer require jcupitt/vips
mit。
詳細なライセンス情報については、個々のファイルヘッダーと.reuse/dep5参照してください。
このプロジェクトは積極的な開発中であり、現在開発中の多くの機能があります。