العمل مع الصور في PHP: نظرة عامة على مكتبات GD وImagick
معالجة الصور هي إحدى المهام الشائعة في تطوير الويب. في PHP هناك مكتبتان رئيسيتان للعمل مع الرسوميات: GD (مضمنة) وImagick (غلاف لـ ImageMagick). في هذه المقالة سنستعرض إمكانياتهما، التثبيت والأمثلة العملية.
مكتبة GD
GD هي إضافة PHP قياسية، متوفرة في معظم خدمات الاستضافة. تسمح بإنشاء وتعديل وحفظ الصور بتنسيقات JPEG، PNG، GIF، WEBP.
التثبيت
في Ubuntu/Debian:
sudo apt install php-gdsudo systemctl restart apache2في Windows — قم بإلغاء تعليق السطر extension=gd في ملف php.ini.
الدوال الأساسية في GD
imagecreatefromjpeg()،imagecreatefrompng()— تحميل الصورةimagesx()،imagesy()— الحصول على العرض والارتفاعimagecopyresampled()— تغيير الحجم مع إعادة العينةimagefilter()— تطبيق المرشحات (التمويه، السالب)imagettftext()— نص بخط TrueTypeimagejpeg()،imagepng()— حفظ النتيجة
مثال 1: تغيير حجم الصورة
<?php$src = 'photo.jpg';$dest = 'thumb.jpg';$newWidth = 300;
// تحميل الصورة الأصلية$img = imagecreatefromjpeg($src);$width = imagesx($img);$height = imagesy($img);
// حساب الارتفاع الجديد بشكل متناسب$newHeight = intval($height * $newWidth / $width);
// إنشاء صورة جديدة$thumb = imagecreatetruecolor($newWidth, $newHeight);imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// الحفظimagejpeg($thumb, $dest, 85);imagedestroy($img);imagedestroy($thumb);echo "تم: $dest";?>مثال 2: إضافة علامة مائية
<?php$mainImg = imagecreatefromjpeg('background.jpg');$watermark = imagecreatefrompng('logo.png');
// الحصول على الأبعاد$mW = imagesx($mainImg);$mH = imagesy($mainImg);$wW = imagesx($watermark);$wH = imagesy($watermark);
// الموضع — الزاوية السفلية اليمنى بهامش 10px$dstX = $mW - $wW - 10;$dstY = $mH - $wH - 10;
// نسخ العلامة المائية مع الشفافيةimagecopy($mainImg, $watermark, $dstX, $dstY, 0, 0, $wW, $wH);
// الحفظimagepng($mainImg, 'result.png');imagedestroy($mainImg);imagedestroy($watermark);?>مكتبة Imagick
Imagick هي غلاف كائني التوجه للأداة القوية ImageMagick. تدعم أكثر من 200 تنسيق، تحويلات معقدة، العمل مع PDF، الرسوم المتحركة وملفات الألوان.
التثبيت
sudo apt install imagemagick php-imagicksudo systemctl restart apache2التحقق من التثبيت:
<?php phpinfo(); ?>ابحث عن قسم imagick.
الفئات والطرق الأساسية
Imagick— الفئة الرئيسية للعمل مع الصورةreadImage()— تحميل الملفresizeImage()— تغيير الحجمcropImage()— القصcompositeImage()— تركيب الصورblurImage()— التمويهsetImageFormat()— تحويل التنسيق
مثال 3: تغيير الحجم والقص
<?php$image = new Imagick('photo.jpg');
// تغيير الحجم إلى 800x600 مع الحفاظ على النسبة$image->resizeImage(800, 600, Imagick::FILTER_LANCZOS, 1, true);
// قص الجزء المركزي 400x400$width = $image->getImageWidth();$height = $image->getImageHeight();$x = ($width - 400) / 2;$y