ما هو Intervention Image ولماذا نحتاجه؟
\n\nIntervention Image هي مكتبة PHP قوية وسهلة لمعالجة الصور. توفر واجهة بسيطة ومعبرة لأداء المهام الأكثر شيوعًا: تغيير الأحجام، الاقتصاص، إضافة العلامات المائية، التصفية، العمل مع الألوان، وغير ذلك الكثير.
\n\nالهدف الرئيسي للمكتبة هو تجريد تعقيد العمل مع GD و Imagick (امتدادي PHP الرئيسيين للعمل مع الصور) وتقديم API موحد ونظيف. بدلاً من كتابة عشرات الأسطر من الكود لكل عملية، يمكنك القيام بذلك بسطر واحد.
\n\nلماذا نحتاجها؟
\n- \n
- البساطة: بناء جملة بديهي يشبه jQuery. \n
- المرونة: تعمل مع كل من GD و Imagick (الخيار لك). \n
- الوظائف: تدعم جميع العمليات الأساسية: تغيير الحجم، الاقتصاص، التدوير، إضافة النص والصور، المرشحات (أبيض وأسود، بني داكن، تمويه، إلخ). \n
- الأمان: تمنع الثغرات الأمنية النموذجية المرتبطة بتحميل الصور. \n
- التوافق: تعمل مع الأطر الشهيرة (Laravel، Symfony، CakePHP) وأنظمة إدارة المحتوى (WordPress، Joomla). \n
إذا كنت بحاجة إلى إنشاء صورة مصغرة للصورة الرمزية، أو ضغط صورة للويب، أو إضافة شعار، أو تطبيق تأثير "الصورة القديمة" — فإن Intervention Image ستتعامل مع ذلك في ثوانٍ معدودة.
\n\nالتثبيت
\n\nيتم تثبيت Intervention Image عبر Composer — مدير الحزم القياسي لـ PHP.
\n\nالخطوة 1: تأكد من تثبيت Composer لديك.
\nإذا لم يكن مثبتًا، قم بتنزيله من getcomposer.org.
\n\nالخطوة 2: قم بتثبيت المكتبة.
\nافتح الطرفية في جذر مشروعك ونفذ الأمر التالي:
\n\ncomposer require intervention/image\n\nسيقوم هذا الأمر بتنزيل المكتبة وجميع تبعياتها في مجلد vendor.
الخطوة 3: قم بتضمين أداة التحميل التلقائي لـ Composer.
\nفي سكريبت PHP الخاص بك (عادةً في البداية)، أضف السطر التالي:
\n\nrequire_once 'vendor/autoload.php';\n\nهام: لكي تعمل المكتبة، يجب أن يكون أحد الامتدادات مثبتًا على الخادم: gd أو imagick. عادةً ما يكون GD مضمنًا افتراضيًا. إذا كنت تستخدم Imagick، فتأكد من تثبيته وتفعيله في ملف php.ini.
التثبيت في Laravel (تلقائي):
\nفي Laravel 5.5+ يتم تسجيل المكتبة تلقائيًا. في الإصدارات الأقدم، تحتاج إلى إضافة موفر الخدمة والواجهة في config/app.php:
'providers' => [\n // ...\n Intervention\\Image\\ImageServiceProvider::class,\n],\n\n'aliases' => [\n // ...\n 'Image' => Intervention\\Image\\Facades\\Image::class,\n],\n\n\nبداية سريعة مع مثال كود
\n\nدعنا ننتقل مباشرة إلى العمل. لنفترض أن لدينا صورة photo.jpg في نفس مجلد السكريبت. نريد تغيير حجمها إلى 300 بكسل في العرض، مع الحفاظ على النسب، وحفظها باسم thumb.jpg.
<?php\nrequire_once 'vendor/autoload.php';\n\nuse Intervention\\Image\\ImageManager;\n\n// إنشاء مدير صور مع برنامج التشغيل 'gd' (افتراضي)\n$manager = new ImageManager(['driver' => 'gd']);\n\n// فتح الملف\n$image = $manager->make('photo.jpg');\n\n// تغيير الحجم: العرض 300، الارتفاع تلقائيًا (بشكل متناسب)\n$image->resize(300, null, function ($constraint) {\n $constraint->aspectRatio(); // الحفاظ على النسب\n});\n\n// حفظ النتيجة\n$image->save('thumb.jpg');\n\necho "تم إنشاء الصورة المصغرة!";\n?>\n\n\nتحليل الكود:
\n- \n
new ImageManager(['driver' => 'g\n