معالجة الصور باستخدام ImageMagick

المقدمة

قد تحتاج أحيانا إلى تعديل الصور أو تغيير أبعادها أو تحويلها بين الصيغ المختلفة، خاصة إذا كنت تعمل على لينكس وتستخدم الطرفية بشكل متكرر. بدلا من الاعتماد على البرامج الرسومية، يمكنك إنجاز هذه المهام باستخدام أدوات تعمل مباشرة من سطر الأوامر، مما يوفر لك مرونة أكبر ويسهّل معالجة عدة صور في وقت واحد. في هذا المقال، سنلقي نظرة على ImageMagick، ونتعرف على كيفية استخدامها لتنفيذ مجموعة من عمليات معالجة الصور بسهولة.

أولا: تعريف بأداة ImageMagick

هي أداة مفتوحة المصدر لمعالجة الصور٬ تتيح لك تنفيذ العديد من العمليات على الصور باستخدام أوامر بسيطة، كما يمكنك دمج هذه الأوامر في السكربتات لأتمتة المهام المتكررة.

من أبرز استخداماتها:

ثانيا: تثبيت ImageMagick

يمكنك تثبيت الأداة باستخدام مدير الحزم الخاص بنظام التشغيل الذي تستخدمه.

  1. على Debian وUbuntu ومشتقاتهما:
Terminal window
sudo apt install imagemagick
  1. على Arch Linux ومشتقاته:
Terminal window
sudo pacman -S imagemagick
  1. على Fedora:
Terminal window
sudo dnf install ImageMagick
  1. على macOS باستخدام Homebrew:
Terminal window
brew install imagemagick

أما إذا كنت تستخدم Windows، فيمكنك تنزيل نسخة مناسبة من صفحة التنزيل الرسمية: ImageMagick Download

ثالثا: تحويل الصور بين الصيغ المختلفة

من أكثر استخدامات ImageMagick شيوعا تحويل الصور من صيغة إلى أخرى. لنفترض أن لديك صورة باسم image.jpg وتريد تحويلها إلى صيغة webp، فيمكنك تنفيذ الأمر التالي:

Terminal window
magick image.jpg image.webp

سيقرأ الأمر الصورة الأصلية وينشئ نسخة جديدة بصيغة webp، دون استبدال الملف الأصلي.

رابعا: تغيير أبعاد الصور

لتغيير أبعاد الصور يمكنك استخدام الخيار resize-.

على سبيل المثال، لتقليل أبعاد الصورة إلى نصف حجمها الأصلي:

Terminal window
magick image.jpg -resize 50% resized.jpg

أما إذا كنت تريد تحديد أبعاد قصوى للصورة، مثل 800×600 بكسل، فاستخدم:

Terminal window
magick image.jpg -resize 800x600 resized.jpg

سيحافظ هذا الأمر على نسبة أبعاد الصورة، بحيث لا يتجاوز عرضها 800 بكسل أو ارتفاعها 600 بكسل، وقد تكون النتيجة أصغر من البعدين المحددين.

وإذا كنت تريد فرض أبعاد محددة تماما، حتى لو تغيرت نسبة أبعاد الصورة، فيمكنك استخدام علامة التعجب:

Terminal window
magick image.jpg -resize '800x600!' resized.jpg

خامسا: قص الصور وتدويرها

لقص الصور يمكن استخدام الخيار crop-.

على سبيل المثال، لقص منطقة بأبعاد 400×300 بكسل تبدأ من الإحداثيات 100،100:

Terminal window
magick image.jpg -crop 400x300+100+100 cropped.jpg

في هذا المثال، تمثل 400x300 أبعاد المنطقة التي نريد الاحتفاظ بها، بينما تمثل +100+100 نقطة البداية من أعلى يسار الصورة.

أما إذا أردت تدوير الصورة بزاوية 90 درجة:

Terminal window
magick image.jpg -rotate 90 rotated.jpg

و لقلب الصورة أفقيا:

Terminal window
magick image.jpg -flop flipped.jpg

أما لقلبها عموديا:

Terminal window
magick image.jpg -flip flipped.jpg

تُحفظ النتائج في ملفات جديدة، وبالتالي يمكنك الاحتفاظ بالصور الأصلية دون تعديلها.

سادسا: تحويل الصور إلى الأبيض والأسود

أحد الأوامر المفضلة عندي والتي أستخدمها لتحويل صورة ملونة إلى صورة بتدرجات الرمادي، يمكنك استخدام الخيار colorspace Gray-:

Terminal window
magick image.jpg -colorspace Gray grayscale.jpg

ويمكنك أيضا تقليل جودة ملف JPEG لتقليل حجمه، باستخدام الخيار -quality:

Terminal window
magick image.jpg -quality 80 compressed.jpg

تحدد القيمة 80 مستوى الجودة المطلوب، وهي قيمة تقريبية ضمن النطاق المعتاد من 0 إلى 100 في ترميز JPEG؛ كلما انخفضت القيمة، زاد الضغط غالبا وانخفضت الجودة. وقد تختلف النتيجة الفعلية بحسب الصورة وإعدادات الترميز.

سابعا: معالجة عدة صور دفعة واحدة

لنفترض أن لديك مجلدا يحتوي على عدة صور بصيغة JPG، وتريد تصغير أبعادها جميعا إلى حدود 800×600 بكسل. يمكنك تنفيذ الأمر التالي:

Terminal window
magick mogrify -resize 800x600 *.jpg

سيتم تطبيق التعديل على جميع ملفات JPG المطابقة في المجلد الحالي.

تنبيه: يقوم الأمر mogrify بتعديل الملفات الأصلية واستبدالها بالنتائج الجديدة.

وإذا كنت تريد تحويل جميع صور PNG إلى JPG مع الاحتفاظ بالملفات الأصلية، يمكنك استخدام:

Terminal window
magick mogrify -format jpg *.png

سينشئ الأمر ملفات JPG جديدة، بينما تبقى ملفات PNG الأصلية موجودة.

ثامنا: معرفة معلومات الصور

يمكنك استخدام ImageMagick أيضا لمعرفة تفاصيل الصور باستخدام الأمر identify.

Terminal window
identify image.jpg

سيعرض الأمر معلومات مثل صيغة الصورة وأبعادها وبعض التفاصيل المتعلقة بحجم الملف.

وإذا كنت تريد معلومات أكثر تفصيلا، استخدم verbose-:

Terminal window
identify -verbose image.jpg

يمكنك الاستفادة من هذه المعلومات عند فحص الصور أو التأكد من أبعادها.

تاسعا: إنشاء صورة تحتوي على نص

لإنشاء صور بسيطة تحتوي على نصوص، مثل إنشاء صورة بخلفية ملونة وكتابة كلمة بداخلها.

على سبيل المثال، لإنشاء صورة بخلفية سوداء وأبعاد 600×200 بكسل تحتوي على نص أبيض:

Terminal window
magick -size 600x200 canvas:black \
-fill white \
-pointsize 48 \
-gravity center \
-annotate 0 "Hello World" \
hello.png

في هذا المثال:

يمكنك تغيير لون الخلفية والنص وحجمهما حسب حاجتك. وإذا أردت كتابة نص عربي، فقد تحتاج إلى تحديد مسار خط يدعم الأحرف العربية باستخدام الخيار font-.

روابط

الموقع الرسمي لـ ImageMagick