تعد هذه الفئة بديلاً لحزمة صورة التدخل للعمل بشكل أكثر مرونة مع النص الموجود على الصورة. استخدمه إذا كنت بحاجة إلى احتواء النص في منطقة معينة، وحساب حجم الخط تلقائيًا وتغيير ارتفاع الخط . تعرف طريقة رسم النص أيضًا كيفية إرجاع الحجم الفعلي للنقوش، مما سيسمح، على سبيل المثال، بوضع الكتل تحت بعضها البعض.
بالإضافة إلى العمل المرن مع النص، يوفر الفصل واجهة برمجة تطبيقات الصور المشابهة لحزمة التدخل. بما في ذلك تغيير حجم الملصق الذكي، والمرشحات، وأشكال الرسم، وتراكب الصور الأخرى.
إذا كنت لا تستخدم الملحن في عملك، فقد تكون مهتمًا أيضًا ببساطة الفصل وغياب أي تبعيات. لاحظ أن هذه الفئة تدعم برنامج تشغيل PHP-GD فقط. يمكنك أيضًا وراثة فصلك بسهولة — يمكن تجاوز جميع الأساليب الخاصة بالوالد.
أفضل طريقة لتثبيت poster editor هي استخدام Composer بسرعة وسهولة.
ومع ذلك، يمكنك طلب الفصل مباشرة دون استخدام المُحمل - وهذا لن يؤثر على الأداء بأي شكل من الأشكال.
php composer.phar require antonlukin/poster-editor
في حالة وجود خطأ، تقوم أساليب الفئة بإرجاع استثناء.
لذلك، من الأفضل الاتصال بهم داخل كتلة try..catch
.
// Using composer
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Or directly
// require_once __DIR__ . '/PosterEditor.php';
try {
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 600 , 600 );
$ image -> show ();
} catch ( Exception $ e ) {
echo $ e -> getMessage ();
}
$image->get()
احصل على مورد الصورة لاستخدام أوامر gd الأولية.
$image->set(instance $resourse)
قم بتعيين مورد الصورة بعد استخدام أوامر gd الأولية.
$image->make(mixed $data)
إنشاء مثيل صورة جديد من ملف أو بيانات ثنائية.
$image->insert(mixed $data, array $options = array())
قم بلصق مصدر صورة محدد فوق الصورة الحالية بموضع اختياري. يمكن أن تكون المعلمة الأولى عبارة عن بيانات ثنائية أو مسار إلى ملف أو مثيل فئة آخر. الخيارات عبارة عن مصفوفة من إحداثيات الإزاحة النسبية x/y من الزاوية اليسرى العليا ودرجة العتامة من 0 إلى 100، حيث لا يمثل 0 شفافية. افتراضيا سيتم توسيط الصورة.
$image->canvas(int $width, int $height, array $options = array())
قم بتهيئة اللوحة القماشية حسب العرض والارتفاع. تتوفر خيارات ألوان الخلفية في مجموعة من إعدادات اللون/التعتيم. افتراضيًا، قماش أسود بدون عتامة.
$image->show(string $format = null, int $quality = 90)
يرسل استجابة HTTP مع الصورة الحالية بتنسيق وجودة محددين. التنسيق هو امتداد لصورة الملف. افتراضيًا، سيتم ترميز بيانات الاستجابة بنوع الصورة الحالية. إذا لم يتم تحديد نوع الصورة بعد، فسوف تقوم الطريقة بإرجاع البيانات المشفرة بتنسيق jpeg. يتم ضبط الجودة لجميع أنواع الملفات لتتراوح من 0 (جودة رديئة، ملف صغير) إلى 100 (أفضل جودة، ملف كبير). القيمة الافتراضية هي 90. تنسيق PNG غير قابل للفقدان وتؤثر الجودة فقط على حجم الصورة وسرعة الضغط.
$image->save(string $path, int $quality = 90, string $format = null)
احفظ الحالة الحالية لكائن الصورة في نظام الملفات. حدد اختياريًا مسارًا معينًا حيث يجب حفظ الصورة. سيتم تحديد نوع الصورة بامتداد الملف. إذا لم يكن هناك ملحق متاح، فسيتم ترميز بيانات الاستجابة بنوع الصورة الحالية. إذا لم يتم تحديد نوع الصورة بعد، فسوف تقوم الطريقة بإرجاع البيانات المشفرة بتنسيق jpeg. اختياريًا، يمكنك تجاوز هذا باستخدام معلمة التنسيق. يتم ضبط الجودة لجميع أنواع الملفات لتتراوح من 0 (جودة رديئة، ملف صغير) إلى 100 (أفضل جودة، ملف كبير). القيمة الافتراضية هي 90. تنسيق PNG غير قابل للفقدان وتؤثر الجودة فقط على حجم الصورة وسرعة الضغط.
$image->destroy()
يحرر الذاكرة المرتبطة بمثيل الصورة الحالي قبل انتهاء البرنامج النصي PHP. عادةً ما يتم تدمير الموارد تلقائيًا بعد انتهاء البرنامج النصي.
$image->width()
إرجاع الارتفاع بالبكسل للصورة الحالية.
$image->height()
إرجاع الارتفاع بالبكسل للصورة الحالية.
$image->resize(int $width, int $height)
تغيير حجم الصورة الحالية بناءً على العرض والارتفاع المحددين. لا ينتبه إلى نسبة العرض إلى الارتفاع. من أجل تغيير الحجم بشكل متناسب، استخدم أساليب upsize
downsize
.
$image->upsize(int $width = null, int $height = null)
تكبير الصورة على الجانب الأكبر. يتم حسابه بواسطة نسبة العرض أو الارتفاع الفارغ.
$image->downsize(int $width = null, int $height = null)
تصغير حجم الصورة على الجانب الأكبر. يتم حسابه بواسطة نسبة العرض أو الارتفاع الفارغ.
$image->crop(int $width, int $height, array $options = array())
قم بقص جزء مستطيل من الصورة الحالية بالعرض والارتفاع المحددين. حدد إحداثيات x وy الاختيارية لتحريك الزاوية العلوية اليسرى من المقطع إلى موضع معين.
$image->fit(int $width, int $height, string $position = 'center')
الجمع بين الاقتصاص وتغيير الحجم لتنسيق الصورة بطريقة ذكية. ستعثر الطريقة على أفضل نسبة عرض إلى ارتفاع مناسبة للصورة الحالية تلقائيًا، وستقوم بقصها وتغيير حجمها إلى البعد المحدد. المواضع المحتملة top-left
، top
، top-right
، bottom-left
، bottom
، bottom-right
، right
، left
center
بشكل افتراضي.
$image->line(int $x1, int $y1, int $x2, int $y2, array $options = array())
ارسم خطًا من النقطة x,y 1 إلى النقطة x,y 2 على الصورة الحالية. استخدم معلمة الخيارات لتعيين قيم اللون والعتامة والعرض.
$image->rectangle(int $x, int $y, int $width, int $height, array $options = array())
ارسم مستطيلاً ملونًا على الصورة الحالية. استخدم معلمة الخيارات لتعيين قيم اللون والعتامة والسمك والمخطط التفصيلي.
$image->ellipse(int $x, int $y, int $width, int $height, array $options = array())
ارسم شكلًا ناقصًا. استخدم معلمة الخيارات لتعيين قيم اللون والعتامة والمخطط التفصيلي.
$image->brightness(int $level = 0)
قم بتغيير سطوع الصورة الحالية حسب المستوى المحدد. استخدم القيم بين -100 للحد الأدنى للسطوع 0 لعدم التغيير و+100 للحد الأقصى.
$image->contrast(int $level = 0)
تغيير تباين الصورة الحالية بالمستوى المحدد. استخدم القيم بين -100 للحد الأدنى من التباين و0 لعدم التغيير و+100 للحد الأقصى.
$image->grayscale()
تحويل الصورة إلى نسخة ذات تدرج رمادي.
$image->blur()
تطبيق تأثير صورة طمس.
$image->invert()
عكس ألوان الصورة.
$image->blackout()
رسم مستطيل التعتيم الأسود على الصورة.
$image->rotate(int $angle, array $options = array())
تدوير الصورة. قم بتعيين زاوية بالدرجات واللون الاختياري للمنطقة المكشوفة بعد التدوير.
$image->text(string $text, array $options = array(), array &$boundary = array())
رسم النص على الصورة. الخيارات الممكنة:
استخدم الحدود للحصول على الأبعاد الفعلية لمربع النص المرسوم. انظر الأمثلة التفصيلية أدناه.
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 , ' bottom ' )-> blackout ( 50 );
$ logo = new PosterEditor PosterEditor ();
$ logo -> make ( ' images/logo.png ' )-> downsize ( 150 , null );
$ image -> insert ( $ logo , array ( ' x ' => 50 , ' y ' => 50 ))-> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 );
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat Lorem ipsum dolor sit amet ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 1000 ,
' height ' => 400 ,
' horizontal ' => ' center ' ,
' vertical ' => ' center ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 24 ,
' lineheight ' => 1.75 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' jpg ' , 70 );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 900 , 600 );
$ image -> blackout ( 70 );
$ image -> text (
' Lorem ipsum dolor d d 4 g sit amet, consectetur adipiscing et, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eas commodo consequat sdfsdfl ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 600 ,
' height ' => 400 ,
' horizontal ' => ' justify ' ,
' vertical ' => ' justify ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' png ' );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> crop (
900 , 600 ,
array (
' x ' => ' 0 ' ,
' y ' => ' 100 '
)
);
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Large title with unknown height. Can be multi-line ' ,
array (
' x ' => 50 ,
' y ' => 100 ,
' width ' => 800 ,
' fontpath ' => ' /fonts/merriweather.ttf ' ,
' fontsize ' => 48 ,
' lineheight ' => 1.5 ,
' color ' => ' #9999ff ' ,
),
$ boundary
);
$ image -> text (
' This text appears right after title using smart boundaries ' ,
array (
' x ' => 50 ,
' y ' => $ boundary [ ' y ' ] + $ boundary [ ' height ' ],
' width ' => 800 ,
' fontpath ' => ' /fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ff9999 ' ,
),
$ boundary
);
$ image -> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1000 , 630 , ' bottom ' );
$ image -> contrast ( 5 )-> brightness (- 30 )-> blur ();
$ image -> rectangle (
20 , 20 , 960 , 590 ,
array (
' color ' => ' #ffffff ' ,
' outline ' => true ,
' width ' => 4 ,
)
);
$ image -> ellipse (
200 , 200 , 200 , 200 ,
array (
' color ' => ' #00ff00 ' ,
' opacity ' => 50 ,
)
);
$ image -> ellipse (
800 , 200 , 200 , 200 ,
array (
' color ' => ' #ff0000 ' ,
' opacity ' => 50 ,
)
);
$ image -> rectangle (
480 , 280 , 80 , 140 ,
array (
' color ' => ' #0000ff ' ,
)
);
$ image -> line (
200 , 500 , 800 , 500 ,
array (
' color ' => array ( 255 , 255 , 0 ),
' opacity ' => 10 ,
' width ' => 4 ,
)
);
$ image -> show ( ' png ' );
يتم تخزين كافة رموز المشروع على جيثب. أفضل طريقة لمساعدة المشروع هي الإبلاغ عن خطأ أو إضافة بعض الوظائف الجديدة. يمكنك أيضًا فتح مشكلة هنا أو إرسال طلب سحب.