العمل مع الصور في Node.js: نظرة عامة على أفضل المكتبات
في تطوير الويب الحديث باستخدام Node.js، غالبًا ما تنشأ الحاجة إلى معالجة الصور برمجيًا: تغيير الحجم، تحويل التنسيقات، إضافة علامات مائية، أو تحسينها لتسريع تحميل المواقع. في هذه المقالة، سنستعرض أشهر ثلاث مكتبات للعمل مع الصور في بيئة Node.js: Sharp وJimp وgm (GraphicsMagick).
1. Sharp — معالجة سريعة وفعالة
تستخدم مكتبة Sharp الوحدة الأصلية libvips المكتوبة بلغة C، مما يوفر أقصى أداء. وهي مثالية لتطبيقات الخادم التي تتطلب معالجة سريعة لعشرات ومئات الصور في الثانية.
التثبيت
npm install sharpالإمكانيات الأساسية والأمثلة
- تغيير الحجم — resize(width, height)
- تحويل التنسيقات — toFormat('webp')
- القص والتدوير — extract(), rotate()
- إضافة نص — composite()
مثال: تغيير الحجم والتحويل إلى WebP
const sharp = require('sharp');
sharp('input.jpg') .resize(800, 600) .toFormat('webp') .toFile('output.webp') .then(info => console.log('تم:', info)) .catch(err => console.error(err));مثال: إنشاء صورة مصغرة مع القص
const sharp = require('sharp');
sharp('large-photo.jpg') .resize(200, 200, { fit: 'cover' }) .toFile('thumbnail.jpg') .then(() => console.log('تم إنشاء الصورة المصغرة'));2. Jimp — حل JavaScript نقي
مكتبة Jimp (برنامج معالجة الصور بلغة JavaScript) مكتوبة بالكامل بلغة JavaScript ولا تتطلب تثبيت تبعيات نظام إضافية. وهذا يجعلها خيارًا مثاليًا للبيئات التي لا يمكن فيها استخدام الوحدات الأصلية (مثل بعض المنصات السحابية).
التثبيت
npm install jimpالإمكانيات الأساسية
- تغيير الحجم، القص، التدوير
- تطبيق تأثيرات الألوان (تدرج الرمادي، العكس)
- إضافة نص مع اختيار الخط
- العمل مع الشفافية (PNG)
مثال: إضافة نص على الصورة
const Jimp = require('jimp');
Jimp.read('background.png') .then(image => { return Jimp.loadFont(Jimp.FONT_SANS_32_WHITE) .then(font => { image.print(font, 50, 50, 'مرحبًا بالعالم!'); return image.writeAsync('result.png'); }); }) .catch(err => console.error(err));مثال: إنشاء تدرج رمادي
const Jimp = require('jimp');
Jimp.read('colorful.jpg') .then(image => { return image .greyscale() .writeAsync('black-white.jpg'); }) .catch(err => console.error(err));3. gm (GraphicsMagick) — أداة قوية للمهام المعقدة
مكتبة gm هي غلاف للأدوات النظامية GraphicsMagick أو ImageMagick. توفر إمكانيات غير محدودة تقريبًا لمعالجة الصور، ولكنها تتطلب تثبيت البرنامج المناسب على الخادم.
التثبيت
npm install gmيجب أيضًا تثبيت GraphicsMagick أو ImageMagick على النظام (على سبيل المثال، عبر apt-get أو brew أو مثبت Windows).
الإمكانيات الأساسية
- دعم جميع تنسيقات الصور
- إضافة طبقات وأقنعة معقدة
- تصحيح الألوان المتقدم
- المعالجة المجمعة
مثال: إضافة علامة مائية
const gm = require('gm');
gm('input.jpg')