استخدام وحدة Imagick لـ PHP المدمجة في ServBay
تُوفر ServBay كبيئة تطوير ويب محلية قوية دمجًا مسبقًا للعديد من امتدادات PHP الشائعة، من ضمنها وحدة Imagick المتخصصة في معالجة الصور. Imagick هو امتداد PHP شائع يعتمد على مكتبة ImageMagick القوية، ويوفر للمطورين إمكانيات واسعة لإنشاء وتحرير ومعالجة الصور. بفضل ServBay، يتمكن المطورون من استخدام Imagick بسهولة ضمن تطبيقات PHP دون الحاجة إلى عمليات تجميع أو إعداد معقدة.
سيتناول هذا المقال كيفية استخدام وحدة Imagick ضمن ServBay، مع شرح ميزاتها، كيفية التأكد من تفعيلها، وكيفية الاستفادة منها ضمن مشاريع PHP لمعالجة الصور.
مقدمة عن وحدة Imagick
Imagick هو امتداد PHP كائني التوجه يغلّف إمكانيات مكتبة ImageMagick. تُعتبر ImageMagick مجموعة برامج مفتوحة المصدر لإنشاء وتحرير وتجميع وتحويل الصور بصيغة نقطية. يتيح امتداد Imagick لمطوري PHP الوصول إلى قدرات ImageMagick المتقدمة مباشرة ضمن سكريبتات PHP.
الميزات الأساسية في Imagick
- دعم صيغ صور متعددة: يدعم أكثر من 200 صيغة صورة مثل JPEG وPNG وGIF وTIFF وPDF وSVG وغيرها.
- عمليات معالجة الصور: يتيح العديد من طرق معالجة الصور، مثل:
- تغيير الحجم، التحجيم، القص، التدوير، القلب.
- إضافة العلامات المائية، النصوص، الإطارات.
- تعديل الألوان، السطوع، التباين، التشبع.
- تطبيق الفلاتر (تغبيش، توضيح، تأثيرات فنية، إلخ).
- تحويل الصيغ.
- معالجة تسلسلات الصور (مثل صور GIF المتحركة).
- أداء عالي: يستفيد من تحسينات مكتبة ImageMagick لتحقيق معالجة صور فعالة وعالية الأداء.
- واجهة كائنية التوجه: يقدم واجهة برمجية سهلة الفهم والتكامل مع كود PHP.
دعم ServBay لوحدة Imagick
تم تصميم ServBay لتبسيط إعداد وإدارة بيئة التطوير المحلية. لذلك تأتي كافة نسخ PHP المدمجة في ServBay مُثبتة مسبقًا بوحدة Imagick، وهي مفعلة تلقائيًا بشكل افتراضي. بالتالي، لا يحتاج مستخدمو ServBay عادة لإجراء أي خطوة إضافية لتركيب أو تفعيل Imagick.
قد يختلف إصدار وحدة Imagick المدمج بحسب إصدار ServBay وإصدار PHP المُختار، لكنه يكون عادة آخر إصدار مستقر متوافق مع PHP المستخدم. يمكنكم معرفة التفاصيل الدقيقة حول النسخة والإعدادات عبر دالة phpinfo()
.
كيفية التأكد من تفعيل Imagick
Imagick مفعلة افتراضيًا ضمن ServBay. للتحقق من وضعها أو معاينة إعداداتها، يمكن اتباع الخطوات التالية:
- إنشاء ملف
phpinfo()
: في مجلد الجذر الخاص بموقع ServBay (مثلاً:/Applications/ServBay/www/servbay.demo
أو المسار الذي قمت بتخصيصه لموقعك)، أنشئ ملفًا جديدًا باسمinfo.php
.php<?php phpinfo(); ?>
1
2
3 - زيارة ملف
info.php
: افتح متصفح الإنترنت واتجه إلى عنوان موقعك، مثل:http://servbay.demo/info.php
. - ابحث عن معلومات Imagick: في صفحة
phpinfo()
المعروضة، مرّر للأسفل أو استخدم وظيفة البحث في المتصفح (Cmd + F
أوCtrl + F
) وابحث عن "imagick". إن كانت الوحدة محملة ومفعلة بنجاح، ستجد قسمًا مستقلًا باسم "imagick" يظهر فيه إصدار الوحدة وكافة إعداداتها.
ظهور قسم Imagick يعني أن الامتداد يعمل بشكل طبيعي.
استخدام Imagick في كود PHP
بعد التأكد من تفعيل Imagick، يمكنك الاستفادة من فئاته ودواله مباشرة في مشاريع PHP ضمن بيئة ServBay.
المتطلبات الأساسية
- تثبيت وتشغيل ServBay مسبقًا.
- إعداد موقع ضمن ServBay (مثل
servbay.demo
) واختيار إصدار PHP مفعّل عليه امتداد Imagick (وهو افتراضيًا). - وضع ملفات مشروع PHP ضمن مجلد موقع ServBay الجذري (مثلاً:
/Applications/ServBay/www/servbay.demo/your-project
).
نموذج عملي: عملية معالجة صورة
فيما يلي مثال مبسط لمعالجة صورة باستخدام Imagick. يقوم المثال بقراءة صورة (file: test.png
)، وإنشاء صورة مصغرة منها مع إضافة إطار وتأثير انعكاس، ثم دمج الصورة الأصلية مع الانعكاس على لوحة جديدة وأخيرًا إخراج الصورة الناتجة.
احفظ الكود التالي في ملف بامتداد .php
(مثلاً: image_process.php
)، وضعه ضمن مجلد يمكن تصفحه على موقعك في ServBay. يجب توفر صورة باسم test.png
في نفس المجلد للتجربة.
php
<?php
// تأكد من تحميل امتداد Imagick
if (!extension_loaded('imagick')) {
die('لم يتم تحميل امتداد Imagick.');
}
$imagePath = 'test.png'; // تأكد من وجود هذا الملف في نفس المجلد
// تحقق من وجود ملف الصورة المصدرية
if (!file_exists($imagePath)) {
die('لم يتم العثور على ملف الصورة المصدرية: ' . $imagePath);
}
try {
/* قراءة الصورة */
$im = new Imagick($imagePath);
/* إنشاء صورة مصغرة: العرض 200 بكسل، والارتفاع حسب النسبة */
// استخدم thumbnailImage للحفاظ على النسبة وتنفيذ التكبير
$im->thumbnailImage(200, null);
/* إضافة إطار أبيض حول الصورة */
$im->borderImage(new ImagickPixel("white"), 5, 5);
/* عمل نسخة من الصورة وإنشاء تأثير الانعكاس */
$reflection = $im->clone();
$reflection->flipImage(); // قلب رأسي لصناعة الانعكاس
/* إنشاء صورة تدرج من الشفافية للأسود */
// يجب أن يكون التدرج بحجم الانعكاس بالإضافة إلى الإطار
$gradientWidth = $reflection->getImageWidth();
$gradientHeight = $reflection->getImageHeight();
$gradient = new Imagick();
// إنشاء تدرج باستخدام صورة pseudo
$gradient->newPseudoImage($gradientWidth, $gradientHeight, "gradient:transparent-black");
/* دمج التدرج مع صورة الانعكاس لإنشاء التأثير */
// COMPOSITE_DSTOUT تقطع صورة الانعكاس عبر قناة alpha الخاصة بالتدرج
// أو يمكن استخدام COMPOSITE_OVER وتعديل الشفافية (ويعتمد ذلك على نسخة ImageMagick)
// للبساطة، سنعتمد COMPOSITE_OVER ونستفيد من قناة alpha في التدرج
$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);
// ملاحظة: لضبط الشفافية بدقة قد يتطلب ذلك أوامر مخصصة حسب نسخة ImageMagick & Imagick
// $reflection->setImageOpacity(0.3); // مثال لضبط شفافية كلية
/* تجهيز لوحة فارغة تكفي الصورة الأصلية والانكاس */
$canvasWidth = $im->getImageWidth() + 40; // بزيادة بعض الهوامش
$canvasHeight = $im->getImageHeight() + $reflection->getImageHeight() + 30; // الطول الإجمالي + المسافات
$canvas = new Imagick();
// إنشاء صورة جديدة بخلفية سوداء
$canvas->newImage($canvasWidth, $canvasHeight, new ImagickPixel("black"));
$canvas->setImageFormat("png"); // الإخراج بصيغة PNG
/* تركيب الصورة الأصلية والانعكاس على اللوحة */
// وضع الصورة الأصلية في الأعلى مع هامش 20 بكسل من اليسار و10 من الأعلى
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
// وضع الانعكاس أسفل الصورة مع هامش إضافي
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10 + 10);
/* تجهيز الهيدر والإخراج */
header("Content-Type: image/png");
echo $canvas;
// تنظيف الموارد
$im->clear();
$im->destroy();
$reflection->clear();
$reflection->destroy();
$gradient->clear();
$gradient->destroy();
$canvas->clear();
$canvas->destroy();
} catch (ImagickException $e) {
// اعتراض أخطاء Imagick
die("خطأ Imagick: " . $e->getMessage());
} catch (Exception $e) {
// اعتراض أي أخطاء أخرى
die("حدث خطأ غير متوقع: " . $e->getMessage());
}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
بعد وضع ملفي image_process.php
و test.png
في مجلد عام لموقع ServBay، يمكنك تصفح الملف عبر المتصفح (مثل: http://servbay.demo/image_process.php
) لمشاهدة نتيجة معالجة الصورة.
نصائح:
- تأكد من أن لدى سكريبت PHP الصلاحيات اللازمة لقراءة ملفات الصور وتنفيذ عمليات المعالجة. عادة في ServBay لا توجد مشاكل صلاحيات.
- لمعالجة الصور المتقدمة، راجع الدليل الرسمي لامتداد Imagick على PHP ووثائق ImageMagick الرسمية.
الأسئلة الشائعة (FAQ)
س: ماذا أفعل إذا لم تكن Imagick مفعلة افتراضيًا في ServBay؟
ج: في الإصدارات الحديثة من ServBay، Imagick تكون مفعلة ومثبتة مسبقًا مع جميع إصدارات PHP المدعومة. إذا لم تجدها مفعلة بعد استخدام phpinfo()
, تأكد أولاً أنك تستخدم آخر نسخة من ServBay. إذا استمر الإشكال، جرّب تبديل إصدار PHP من لوحة تحكم ServBay، ثم أعد التبديل، أو قم بإعادة تشغيل خدمة ServBay. إن تواصلت المشكلة، راجع الوثائق الرسمية أو مجتمع ServBay للمساعدة.
س: هل أحتاج لتثبيت مكتبة ImageMagick بشكل منفصل؟
ج: لا تحتاج. ServBay يأتي بمجموعة Imagick PHP والاعتمادات المطلوبة من ImageMagick ضمن الباقة، ولا يلزمك تثبيت أي شيء إضافي.
س: ما هي صيغ الصور المدعومة من Imagick؟
ج: يدعم Imagick كل الصيغ التي يدعمها ImageMagick عمومًا، والتي تشمل أكثر من 200 صيغة وأشهرها JPEG, PNG, GIF, TIFF, PDF, SVG. يمكنك استخدام دالة queryFormats()
من كائن Imagick لمعرفة قائمة الصيغ المدعومة تحديدًا في بيئة ServBay لديك.
الخلاصة
تسعى ServBay لتسهيل مهمة مطوري PHP في معالجة الصور محليًا عبر تثبيت وتفعيل Imagick افتراضيًا، مما يلغي الحاجة للإعدادات المعقدة ويُسرع بداية المشاريع. يمكن للمطورين الاستفادة الفورية من قوة Imagick لإتمام مختلف عمليات الصور، دون تضييع الوقت في التركيب والتجربة. ومع دعم ServBay لعدة إصدارات PHP وتقنيات شكلية أخرى، تُعتبر Imagick إحدى الأدوات القيمة التي تثري بيئة تطوير ServBay وتُمكن المطورين من بناء تطبيقات ويب غنية وفعالة.