ไลบรารี PHP สำหรับการเข้ารหัสภาพ JPEG XL รองรับอินพุต JPEG และ PNG แรงบันดาลใจอย่างมากจากห้องสมุด Webp Convert ที่ยอดเยี่ยม
มันมีจุดประสงค์เพื่อเป็นโซลูชันแบบปลั๊กแอนด์เพลย์ที่ครอบคลุมกรณีการใช้งานที่พบบ่อยที่สุดและสามารถใช้ในโครงการ PHP ที่หลากหลาย
proc_open php เพื่อให้ไลบรารีสามารถเรียกใช้ไบนารี CJXL บนบรรทัดคำสั่งvips PHP ได้รับการติดตั้งและเปิดใช้งาน ไลบรารีการประมวลผลภาพวีไอพีต้องรวบรวมด้วยการสนับสนุน JXLimagick PHP ได้รับการติดตั้งและเปิดใช้งาน Imagemagick Library ต้องรวบรวมด้วยการสนับสนุน 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
เลือกการเข้ารหัสที่จะใช้, lossy สำหรับ vardct และ lossless สำหรับ modular ค่าเริ่มต้นคือ lossy สำหรับอินพุต jpeg และ lossless สำหรับอินพุต PNG
quality
คุณภาพของภาพสำหรับการบีบอัดที่สูญเสีย ช่วงคุณภาพเริ่มตั้งแต่ 1 ถึง 100 ค่าเริ่มต้นคือ 85
effort
ควบคุมระยะเวลาที่ใช้สำหรับการเข้ารหัสภาพ การเข้ารหัสที่ยาวขึ้นหมายถึงไฟล์ที่เล็กกว่า ช่วงตั้งแต่ 1 ถึง 9 โดยที่ 1 เป็นระยะที่เร็วที่สุดและ 9 นั้นช้าที่สุด ค่าเริ่มต้นคือ 7
progressive
เปิดใช้งานการถอดรหัสแบบก้าวหน้าสำหรับภาพ หากเว็บเบราว์เซอร์รองรับการเรนเดอร์แบบก้าวหน้ารูปภาพจะดาวน์โหลดได้เร็วขึ้น ในโหมด VARDCT การถอดรหัสแบบก้าวหน้าจะไม่ส่งผลกระทบต่อขนาดไฟล์มากนัก
ไม่แนะนำให้เปิดใช้งานการถอดรหัสแบบโมดูลสำหรับภาพโมดูลาร์เนื่องจากทำให้ไฟล์ภาพผลลัพธ์มีขนาดใหญ่ขึ้นอย่างมาก สามารถเปิดใช้งานได้ในภายหลังในเวอร์ชันอนาคตเมื่อมีเบราว์เซอร์ที่รองรับการดาวน์โหลดเพียงบางส่วนของไฟล์แบบโมดูลาร์โปรเกรสซีฟ
ค่าเริ่มต้นเป็น true สำหรับการสูญเสียและ false สำหรับการสูญเสีย
มีสี่วิธีที่แตกต่างกันที่คุณสามารถใช้ได้: CJXL ไบนารี, ระบบ CJXL, ส่วนขยาย Imagemagick และการขยาย VIPS ห้องสมุดต้องผ่านแต่ละวิธีที่มีอยู่และพยายามใช้งาน หากไม่มีวิธีการใดที่มีข้อยกเว้นจะถูกโยนลงไป
วิธีนี้ดำเนินการ cjxl ไบนารีบนบรรทัดคำสั่ง มันเป็นวิธีที่เข้ากันได้มากที่สุดและรองรับคุณสมบัติมากที่สุด อย่างไรก็ตามฟังก์ชั่น proc_open จะต้องเปิดใช้งานในการติดตั้ง PHP เนื่องจากไลบรารีดำเนินการไบนารีบนบรรทัดคำสั่ง โฮสต์เว็บบางรายการอาจปิดการใช้งานฟังก์ชั่นนี้ด้วยเหตุผลด้านความปลอดภัย
หมายเหตุ: ไลบรารีนี้มาพร้อมกับ cjxl Binary รุ่นที่รวบรวมไว้แบบคงที่สำหรับระบบ Linux, MacOS และ Windows ไบนารีมาพร้อมกับไลบรารีที่ต้องการทั้งหมดซึ่งหมายความว่าจะทำงานนอกกรอบโดยไม่จำเป็นต้องติดตั้งการพึ่งพาเพิ่มเติมใด ๆ
นี่เป็นวิธีเดียวกับวิธีการก่อนหน้า แต่จะดำเนินการ cjxl ไบนารีจากเส้นทางระบบ ซึ่งหมายความว่าคุณต้องติดตั้ง JPEG XL โดยใช้ System Package Manager ของคุณเช่น Homebrew หรือสร้าง JPEG XL จากแหล่งที่มาและเพิ่ม cjxl ไบนารีลงในตัวแปรเส้นทางของคุณ
วิธีนี้ใช้ไลบรารี ImageMagick และ PHP Extension Imagick อย่างไรก็ตาม ImageMagick จะต้องสร้างขึ้นด้วยตัวแทน JXL ในทางปฏิบัติซึ่งหมายความว่าคุณจะต้องติดตั้งไลบรารี libjxl บนเซิร์ฟเวอร์ จากนั้นคุณจะต้องสร้าง ImageMagick จากแหล่งที่มาพร้อมกับตัวเลือก --with-jxl=yes สุดท้ายคุณจะต้องติดตั้งส่วนขยาย Imagick PHP ส่วนขยายของ Imagemagick ไม่รองรับการเข้ารหัสแบบก้าวหน้าในเวลานั้น ตัวอย่างวิธีการรวบรวม ImageMagick ด้วยการสนับสนุน JPEG XL ดู DockerFile นี้
วิธีนี้ใช้ไลบรารี VIPS และส่วนขยาย PHP อย่างไรก็ตามวีไอพีจะต้องสร้างด้วยการสนับสนุน JXL ในทางปฏิบัติซึ่งหมายความว่าคุณจะต้องติดตั้งไลบรารี libjxl บนเซิร์ฟเวอร์ จากนั้นคุณจะต้องสร้างวีไอพีจากแหล่งที่มา สุดท้ายคุณจะต้องติดตั้งส่วนขยาย VIPS PHP ส่วนขยาย VIPS ไม่รองรับการเข้ารหัสแบบก้าวหน้าในเวลานั้น ตัวอย่างวิธีการรวบรวมวีไอพีด้วยการสนับสนุน JPEG XL ดู DockerFile นี้
นอกจากนี้ส่วนขยาย VIPS คุณจะต้องติดตั้งไลบรารี jcupitt/vips PHP ในโครงการของคุณนอกจากนี้ jpeg-xl-encode คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:
composer require jcupitt/vips
MIT
สำหรับข้อมูลใบอนุญาตโดยละเอียดดูส่วนหัวไฟล์แต่ละไฟล์และ .reuse/dep5
โครงการนี้อยู่ระหว่างการพัฒนาที่ใช้งานอยู่และมีคุณสมบัติหลายประการที่อยู่ระหว่างการพัฒนา