معالجة الصور باستخدام ImageMagick
October 14 2026
المقدمة
قد تحتاج أحيانا إلى تعديل الصور أو تغيير أبعادها أو تحويلها بين الصيغ المختلفة، خاصة إذا كنت تعمل على لينكس وتستخدم الطرفية بشكل متكرر. بدلا من الاعتماد على البرامج الرسومية، يمكنك إنجاز هذه المهام باستخدام أدوات تعمل مباشرة من سطر الأوامر، مما يوفر لك مرونة أكبر ويسهّل معالجة عدة صور في وقت واحد. في هذا المقال، سنلقي نظرة على ImageMagick، ونتعرف على كيفية استخدامها لتنفيذ مجموعة من عمليات معالجة الصور بسهولة.
أولا: تعريف بأداة ImageMagick
هي أداة مفتوحة المصدر لمعالجة الصور٬ تتيح لك تنفيذ العديد من العمليات على الصور باستخدام أوامر بسيطة، كما يمكنك دمج هذه الأوامر في السكربتات لأتمتة المهام المتكررة.
من أبرز استخداماتها:
- تحويل الصور بين صيغ مختلفة مثل PNG وJPG وWebP.
- تغيير أبعاد الصور وتقليل حجمها.
- قص الصور وتدويرها وقلبها.
- تحويل الصور الملونة إلى الأبيض والأسود.
- إضافة النصوص والعلامات المائية.
- جمع عدة صور في صورة واحدة.
- استخراج معلومات الصور مثل الأبعاد والصيغة وحجم الملف.
ثانيا: تثبيت ImageMagick
يمكنك تثبيت الأداة باستخدام مدير الحزم الخاص بنظام التشغيل الذي تستخدمه.
- على Debian وUbuntu ومشتقاتهما:
sudo apt install imagemagick- على Arch Linux ومشتقاته:
sudo pacman -S imagemagick- على Fedora:
sudo dnf install ImageMagick- على macOS باستخدام Homebrew:
brew install imagemagickأما إذا كنت تستخدم Windows، فيمكنك تنزيل نسخة مناسبة من صفحة التنزيل الرسمية: ImageMagick Download
ثالثا: تحويل الصور بين الصيغ المختلفة
من أكثر استخدامات ImageMagick شيوعا تحويل الصور من صيغة إلى أخرى. لنفترض أن لديك صورة باسم image.jpg وتريد تحويلها إلى صيغة webp، فيمكنك تنفيذ الأمر التالي:
magick image.jpg image.webpسيقرأ الأمر الصورة الأصلية وينشئ نسخة جديدة بصيغة webp، دون استبدال الملف الأصلي.
رابعا: تغيير أبعاد الصور
لتغيير أبعاد الصور يمكنك استخدام الخيار resize-.
على سبيل المثال، لتقليل أبعاد الصورة إلى نصف حجمها الأصلي:
magick image.jpg -resize 50% resized.jpgأما إذا كنت تريد تحديد أبعاد قصوى للصورة، مثل 800×600 بكسل، فاستخدم:
magick image.jpg -resize 800x600 resized.jpgسيحافظ هذا الأمر على نسبة أبعاد الصورة، بحيث لا يتجاوز عرضها 800 بكسل أو ارتفاعها 600 بكسل، وقد تكون النتيجة أصغر من البعدين المحددين.
وإذا كنت تريد فرض أبعاد محددة تماما، حتى لو تغيرت نسبة أبعاد الصورة، فيمكنك استخدام علامة التعجب:
magick image.jpg -resize '800x600!' resized.jpgخامسا: قص الصور وتدويرها
لقص الصور يمكن استخدام الخيار crop-.
على سبيل المثال، لقص منطقة بأبعاد 400×300 بكسل تبدأ من الإحداثيات 100،100:
magick image.jpg -crop 400x300+100+100 cropped.jpgفي هذا المثال، تمثل 400x300 أبعاد المنطقة التي نريد الاحتفاظ بها، بينما تمثل +100+100 نقطة البداية من أعلى يسار الصورة.
أما إذا أردت تدوير الصورة بزاوية 90 درجة:
magick image.jpg -rotate 90 rotated.jpgو لقلب الصورة أفقيا:
magick image.jpg -flop flipped.jpgأما لقلبها عموديا:
magick image.jpg -flip flipped.jpgتُحفظ النتائج في ملفات جديدة، وبالتالي يمكنك الاحتفاظ بالصور الأصلية دون تعديلها.
سادسا: تحويل الصور إلى الأبيض والأسود
أحد الأوامر المفضلة عندي والتي أستخدمها لتحويل صورة ملونة إلى صورة بتدرجات الرمادي، يمكنك استخدام الخيار colorspace Gray-:
magick image.jpg -colorspace Gray grayscale.jpgويمكنك أيضا تقليل جودة ملف JPEG لتقليل حجمه، باستخدام الخيار -quality:
magick image.jpg -quality 80 compressed.jpgتحدد القيمة 80 مستوى الجودة المطلوب، وهي قيمة تقريبية ضمن النطاق المعتاد من 0 إلى 100 في ترميز JPEG؛ كلما انخفضت القيمة، زاد الضغط غالبا وانخفضت الجودة. وقد تختلف النتيجة الفعلية بحسب الصورة وإعدادات الترميز.
سابعا: معالجة عدة صور دفعة واحدة
لنفترض أن لديك مجلدا يحتوي على عدة صور بصيغة JPG، وتريد تصغير أبعادها جميعا إلى حدود 800×600 بكسل. يمكنك تنفيذ الأمر التالي:
magick mogrify -resize 800x600 *.jpgسيتم تطبيق التعديل على جميع ملفات JPG المطابقة في المجلد الحالي.
تنبيه: يقوم الأمر mogrify بتعديل الملفات الأصلية واستبدالها بالنتائج الجديدة.
وإذا كنت تريد تحويل جميع صور PNG إلى JPG مع الاحتفاظ بالملفات الأصلية، يمكنك استخدام:
magick mogrify -format jpg *.pngسينشئ الأمر ملفات JPG جديدة، بينما تبقى ملفات PNG الأصلية موجودة.
ثامنا: معرفة معلومات الصور
يمكنك استخدام ImageMagick أيضا لمعرفة تفاصيل الصور باستخدام الأمر identify.
identify image.jpgسيعرض الأمر معلومات مثل صيغة الصورة وأبعادها وبعض التفاصيل المتعلقة بحجم الملف.
وإذا كنت تريد معلومات أكثر تفصيلا، استخدم verbose-:
identify -verbose image.jpgيمكنك الاستفادة من هذه المعلومات عند فحص الصور أو التأكد من أبعادها.
تاسعا: إنشاء صورة تحتوي على نص
لإنشاء صور بسيطة تحتوي على نصوص، مثل إنشاء صورة بخلفية ملونة وكتابة كلمة بداخلها.
على سبيل المثال، لإنشاء صورة بخلفية سوداء وأبعاد 600×200 بكسل تحتوي على نص أبيض:
magick -size 600x200 canvas:black \ -fill white \ -pointsize 48 \ -gravity center \ -annotate 0 "Hello World" \ hello.pngفي هذا المثال:
- يحدد الخيار
size-أبعاد الصورة. - يحدد
canvas:blackخلفية سوداء. - يحدد
fill white-لون النص. - يحدد
pointsize 48-حجم الخط. - يضع
gravity center-النص في منتصف الصورة. - يضيف
annotate-النص المطلوب.
يمكنك تغيير لون الخلفية والنص وحجمهما حسب حاجتك. وإذا أردت كتابة نص عربي، فقد تحتاج إلى تحديد مسار خط يدعم الأحرف العربية باستخدام الخيار font-.