Skip to content

منشئ Sharp

Sharp هي مكتبة معالجة صور عالية الأداء لـ Node.js. المنشئ هو نقطة البداية لاستخدام Sharp.

الاستخدام الأساسي

javascript
import sharp from 'sharp';

// إنشاء مثيل Sharp من مسار الملف
const image = sharp('input.jpg');

// إنشاء مثيل Sharp من Buffer
const image = sharp(inputBuffer);

// إنشاء مثيل Sharp من Stream
const image = sharp(inputStream);

معاملات المنشئ

مصدر الإدخال

يقبل منشئ Sharp أنواعًا متعددة من مصادر الإدخال:

javascript
// مسار الملف
sharp('input.jpg')

// Buffer
sharp(buffer)

// Stream
sharp(stream)

// URL
sharp('https://example.com/image.jpg')

// مصادر إدخال متعددة
sharp(['input1.jpg', 'input2.jpg'])

كائن الخيارات

javascript
sharp(input, {
  // خيارات الإدخال
  input: {
    failOnError: false,
    limitInputPixels: 268402689,
    sequentialRead: false
  },
  
  // خيارات الصفحة (للصور متعددة الصفحات)
  pages: -1,
  
  // خيارات البيانات الخام
  raw: {
    width: 1920,
    height: 1080,
    channels: 3
  }
})

خيارات الإدخال

failOnError

  • النوع: boolean
  • القيمة الافتراضية: true
  • الوصف: ما إذا كان يجب رمي استثناء عند مواجهة خطأ
javascript
sharp('input.jpg', { failOnError: false })
  .resize(300, 200)
  .toFile('output.jpg')
  .catch(err => console.log('فشلت المعالجة:', err));

limitInputPixels

  • النوع: number
  • القيمة الافتراضية: 268402689 (16384 x 16384)
  • الوصف: تحديد عدد وحدات البكسل في صورة الإدخال
javascript
sharp('large-image.jpg', { 
  limitInputPixels: 100000000 
})

sequentialRead

  • النوع: boolean
  • القيمة الافتراضية: false
  • الوصف: ما إذا كان يجب قراءة بيانات الصورة بشكل تسلسلي
javascript
sharp('input.jpg', { sequentialRead: true })

الصور متعددة الصفحات

للصور متعددة الصفحات (مثل TIFF و PDF)، يمكنك تحديد الصفحات المراد معالجتها:

javascript
// معالجة جميع الصفحات
sharp('multi-page.tiff', { pages: -1 })

// معالجة صفحة محددة (تبدأ من 0)
sharp('multi-page.tiff', { pages: 0 })

// معالجة صفحات متعددة
sharp('multi-page.tiff', { pages: [0, 2, 4] })

بيانات الصورة الخام

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

javascript
sharp(rawBuffer, {
  raw: {
    width: 1920,
    height: 1080,
    channels: 3  // RGB
  }
})

معالجة الأخطاء

javascript
try {
  const image = sharp('input.jpg');
  await image.toFile('output.jpg');
} catch (error) {
  console.error('فشلت معالجة الصورة:', error.message);
}

نصائح الأداء

  1. إعادة استخدام المثيلات: أعد استخدام مثيلات Sharp قدر الإمكان
  2. المعالجة المتدفقة: للملفات الكبيرة، استخدم المعالجة المتدفقة
  3. إدارة الذاكرة: حرر المثيلات غير الضرورية في الوقت المناسب
javascript
// ممارسة جيدة
const sharp = require('sharp');
const image = sharp('input.jpg');

// معالجة عمليات متعددة
await image
  .resize(300, 200)
  .jpeg({ quality: 80 })
  .toFile('output1.jpg');

await image
  .resize(150, 100)
  .png()
  .toFile('output2.jpg');

روابط ذات صلة

تم الإصدار بموجب رخصة Apache 2.0.