Perpustakaan PHP untuk mengkode gambar JPEG XL. Mendukung input JPEG dan PNG. Sangat terinspirasi oleh perpustakaan WebP Convert yang luar biasa.
Ini dimaksudkan sebagai solusi plug-and-play yang mencakup kasus penggunaan yang paling umum dan dapat digunakan dalam berbagai proyek PHP.
proc_open perlu diaktifkan sehingga pustaka dapat menjalankan biner CJXL pada baris perintah.vips diinstal dan diaktifkan. Perpustakaan Pemrosesan Gambar VIPS harus dikompilasi dengan dukungan JXLimagick diinstal dan diaktifkan. Perpustakaan Imagemagick perlu dikompilasi dengan dukungan 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
Memilih pengkodean mana yang akan digunakan, lossy untuk vardct dan lossless untuk modular. Default lossy untuk input JPEG dan lossless untuk input PNG.
quality
Kualitas gambar untuk kompresi lossy. Kisaran kualitas berjalan dari 1 hingga 100 . Default adalah 85 .
effort
Mengontrol berapa banyak waktu yang digunakan untuk pengkodean gambar. Waktu pengkodean yang lebih lama berarti file yang lebih kecil. Kisaran dari 1 hingga 9 di mana 1 adalah yang tercepat dan 9 adalah yang paling lambat. Default adalah 7 .
progressive
Mengaktifkan decoding progresif untuk gambar. Jika browser web mendukung rendering progresif, gambar akan mengunduh secara perseptual lebih cepat. Dalam mode vardct, decoding progresif tidak banyak mempengaruhi ukuran file.
Mengaktifkan decoding progresif untuk gambar modular tidak disarankan karena membuat file gambar yang dihasilkan secara signifikan lebih besar. Ini dapat diaktifkan di kemudian hari dalam versi mendatang ketika ada browser yang mendukung pengunduhan hanya sebagian dari file progresif modular.
Nilai default true untuk lossy dan false untuk lossless.
Ada empat metode berbeda yang dapat Anda gunakan: Biner CJXL, Biner Sistem CJXL, Ekstensi Imagemagick, dan Ekstensi VIPS. Perpustakaan melewati setiap metode yang tersedia dan mencoba menggunakannya. Jika tidak ada metode yang tersedia, pengecualian akan dilemparkan.
Metode ini mengeksekusi biner cjxl pada baris perintah. Ini adalah metode yang paling kompatibel dan mendukung sebagian besar fitur. Namun, fungsi proc_open perlu diaktifkan dalam instalasi PHP karena perpustakaan mengeksekusi biner pada baris perintah. Beberapa host web dapat menonaktifkan fungsi ini karena alasan keamanan.
Catatan: Perpustakaan ini dibundel dengan versi Biner cjxl yang dikompilasi secara statis untuk sistem Linux, MacOS dan Windows. Biner dibundel dengan semua perpustakaan yang diperlukan yang berarti akan bekerja di luar kotak tanpa perlu menginstal ketergantungan tambahan apa pun.
Ini sama dengan metode sebelumnya tetapi mengeksekusi biner cjxl dari jalur sistem. Ini berarti Anda perlu menginstal JPEG XL menggunakan manajer paket sistem Anda seperti homebrew atau membangun jpeg xl dari sumber dan menambahkan biner cjxl ke variabel jalur Anda.
Metode ini menggunakan perpustakaan Imagemagick dan PHP Extension Imagick -nya. Namun, Imagemagick perlu dibangun dengan delegasi JXL. Dalam praktiknya, ini berarti Anda perlu menginstal pustaka libjxl di server. Maka Anda perlu membangun Imagemagick dari sumber dengan opsi --with-jxl=yes . Terakhir, Anda perlu menginstal ekstensi PHP Imagick. Ekstensi Imagemagick tidak mendukung pengkodean progresif pada saat itu. Sebagai contoh cara mengkompilasi Imagemagick dengan dukungan JPEG XL, lihat DockerFile ini.
Metode ini menggunakan pustaka VIPS dan ekstensi PHP -nya. Namun, VIP perlu dibangun dengan dukungan JXL. Dalam praktiknya, ini berarti Anda perlu menginstal pustaka libjxl di server. Maka Anda perlu membangun VIP dari sumbernya. Terakhir, Anda harus menginstal ekstensi PHP VIPS. Ekstensi VIPS tidak mendukung pengkodean progresif pada saat itu. Sebagai contoh cara mengkompilasi VIP dengan dukungan JPEG XL, lihat DockerFile ini.
Selain itu Extension VIPS, Anda juga perlu menginstal pustaka jcupitt/vips PHP di proyek Anda selain jpeg-xl-encode , Anda dapat melakukan ini dengan menggunakan perintah berikut:
composer require jcupitt/vips
Mit.
Untuk informasi lisensi terperinci, lihat masing -masing header file dan .reuse/dep5 .
Proyek ini sedang dalam pengembangan aktif dan memiliki sejumlah fitur yang saat ini sedang dikembangkan.