مكتبة PHP لترميز صور JPEG XL. يدعم إدخال JPEG و PNG. مستوحاة للغاية من مكتبة تحويل الويب الممتازة.
الغرض منه هو حل التوصيل والتشغيل يغطي حالات الاستخدام الأكثر شيوعًا ويمكن استخدامه في مجموعة واسعة من مشاريع PHP.
proc_open PHP بحيث يمكن للمكتبة تنفيذ CJXL الثنائي على سطر الأوامر.vips وتمكينه. يجب تجميع مكتبة معالجة الصور VIPS بدعم JXLimagick وتمكينه. يجب تجميع مكتبة 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
يختار الترميز للاستخدام ، lossy لـ vardct وبدون lossless بالنسبة للوحدة. الافتراضي هو lossy إدخال JPEG وبدون lossless لإدخال PNG.
quality
جودة الصورة للضغط المفقود. نطاق الجودة يذهب من 1 إلى 100 . الافتراضي هو 85 .
effort
يتحكم في مقدار الوقت الذي يتم استخدامه لتشفير الصور. وقت الترميز أطول يعني ملفات أصغر. النطاق من 1 إلى 9 حيث 1 هو الأسرع و 9 هو أبطأ. الافتراضي هو 7 .
progressive
يتيح فك التشفير التدريجي للصورة. إذا كان متصفح الويب يدعم التقديم التدريجي ، فسيتم تنزيل الصورة بشكل أسرع بشكل إدراكي. في وضع Vardct ، لا يؤثر فك التشفير التدريجي على حجم الملف كثيرًا.
لا ينصح بتمكين فك التشفير التدريجي للصور المعيارية لأنه يجعل ملف الصورة الناتج أكبر بكثير. يمكن تمكينه في تاريخ لاحق في إصدار مستقبلي عندما يكون هناك متصفحات تدعم تنزيل جزء فقط من ملف تدريجي معياري.
القيمة الافتراضية true للفقدان false لخسارة.
هناك أربع طرق مختلفة يمكنك استخدامها: CJXL Binary ، CJXL System Binary ، امتداد ImageMagick وتمديد VIPs. تمر المكتبة بكل من الأساليب المتاحة وتحاول استخدامها. إذا لم تتوفر أي من الطرق ، فسيتم طرح استثناء.
تنفذ هذه الطريقة ثنائي cjxl على سطر الأوامر. إنها الطريقة الأكثر توافقًا ويدعم معظم الميزات. ومع ذلك ، يجب تمكين وظيفة proc_open في تثبيت PHP لأن المكتبة تنفذ الثنائي في سطر الأوامر. قد يقوم بعض مضيفي الويب بتعطيل هذه الوظيفة لأسباب أمنية.
ملاحظة: تأتي هذه المكتبة مجمعة مع إصدار تم تجميعه بشكل ثابت من cjxl Binary لأنظمة Linux و MacOS و Windows. يتم تجميع الثنائي مع جميع المكتبات المطلوبة مما يعني أنها ستعمل خارج المربع دون الحاجة إلى تثبيت أي تبعيات إضافية.
هذا هو نفس الطريقة السابقة ولكنه ينفذ ثنائي cjxl من مسار النظام. هذا يعني أنك بحاجة إلى تثبيت JPEG XL باستخدام مدير حزمة النظام الخاص بك مثل Homebrew أو إنشاء JPEG XL من المصدر وإضافة cjxl الثنائي إلى متغير المسار الخاص بك.
تستخدم هذه الطريقة مكتبة ImageMagick و PHP Extension Imagick. ومع ذلك ، يجب بناء ImageMagick مع مندوب JXL. في الممارسة العملية ، هذا يعني أنك ستحتاج إلى تثبيت مكتبة libjxl على الخادم. ثم ستحتاج إلى بناء ImageMagick من المصدر مع الخيار --with-jxl=yes . أخيرًا ، ستحتاج إلى تثبيت امتداد PHP Imagick. لا يدعم امتداد ImageMagick الترميز التدريجي في ذلك الوقت. للحصول على مثال على كيفية تجميع ImageMagick مع دعم JPEG XL ، راجع هذا Dockerfile.
تستخدم هذه الطريقة مكتبة VIPS وتمديد PHP الخاص بها. ومع ذلك ، يجب بناء الشخصيات المهمة مع دعم JXL. في الممارسة العملية ، هذا يعني أنك ستحتاج إلى تثبيت مكتبة libjxl على الخادم. ثم ستحتاج إلى بناء كبار الشخصيات من المصدر. أخيرًا ، ستحتاج إلى تثبيت امتداد VIPS PHP. لا يدعم امتداد VIPS الترميز التدريجي في ذلك الوقت. للحصول على مثال على كيفية تجميع كبار الشخصيات مع دعم JPEG XL ، راجع هذا Dockerfile.
بالإضافة إلى ذلك ، ستحتاج أيضًا إلى تثبيت مكتبة jcupitt/vips PHP في مشروعك بالإضافة إلى jpeg-xl-encode ، يمكنك القيام بذلك باستخدام الأمر التالي:
composer require jcupitt/vips
معهد ماساتشوستس للتكنولوجيا.
للحصول على معلومات ترخيص مفصلة ، راجع رؤوس الملفات الفردية و .reuse/dep5 .
هذا المشروع تحت التطوير النشط ولديه عدد من الميزات قيد التطوير حاليًا.