Skip to content

البدء السريع

سيساعدك هذا الدليل على البدء بسرعة مع Sharp، وتعلم عمليات معالجة الصور الأساسية.

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

استيراد Sharp

javascript
import sharp from 'sharp';

أو استخدام CommonJS:

javascript
const sharp = require('sharp');

قراءة الصور

يدعم Sharp تنسيقات إدخال متعددة:

javascript
// القراءة من ملف
const image = sharp('input.jpg');

// القراءة من Buffer
const image = sharp(buffer);

// القراءة من Stream
const image = sharp(stream);

العمليات الأساسية

تغيير الحجم

javascript
// تغيير إلى حجم محدد
await sharp('input.jpg')
  .resize(300, 200)
  .toFile('output.jpg');

// الحفاظ على نسبة العرض إلى الارتفاع
await sharp('input.jpg')
  .resize(300, null) // عرض 300، الارتفاع تلقائي
  .toFile('output.jpg');

// استخدام أوضاع التكيف المختلفة
await sharp('input.jpg')
  .resize(300, 200, {
    fit: 'cover',    // القص للتكيف
    position: 'center' // القص المركزي
  })
  .toFile('output.jpg');

تحويل التنسيق

javascript
// التحويل إلى JPEG
await sharp('input.png')
  .jpeg({ quality: 80 })
  .toFile('output.jpg');

// التحويل إلى WebP
await sharp('input.jpg')
  .webp({ quality: 80 })
  .toFile('output.webp');

// التحويل إلى PNG
await sharp('input.jpg')
  .png({ compressionLevel: 9 })
  .toFile('output.png');

القص

javascript
// قص منطقة محددة
await sharp('input.jpg')
  .extract({ left: 100, top: 100, width: 200, height: 200 })
  .toFile('cropped.jpg');

التدوير

javascript
// تدوير 90 درجة
await sharp('input.jpg')
  .rotate(90)
  .toFile('rotated.jpg');

العمليات المتقدمة

تأثيرات الفلتر

javascript
// الضبابية
await sharp('input.jpg')
  .blur(5)
  .toFile('blurred.jpg');

// الحدّة
await sharp('input.jpg')
  .sharpen()
  .toFile('sharpened.jpg');

// التدرج الرمادي
await sharp('input.jpg')
  .grayscale()
  .toFile('grayscale.jpg');

تعديل الألوان

javascript
// تعديل السطوع
await sharp('input.jpg')
  .modulate({ brightness: 1.2 })
  .toFile('bright.jpg');

// تعديل التباين
await sharp('input.jpg')
  .modulate({ contrast: 1.5 })
  .toFile('contrast.jpg');

// تعديل التشبع
await sharp('input.jpg')
  .modulate({ saturation: 0.8 })
  .toFile('desaturated.jpg');

خيارات الإخراج

الحفظ إلى ملف

javascript
await sharp('input.jpg')
  .resize(300, 200)
  .toFile('output.jpg');

الإخراج إلى Buffer

javascript
const buffer = await sharp('input.jpg')
  .resize(300, 200)
  .jpeg()
  .toBuffer();

الإخراج إلى Stream

javascript
sharp('input.jpg')
  .resize(300, 200)
  .jpeg()
  .pipe(fs.createWriteStream('output.jpg'));

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

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

تحسين الأداء

المعالجة المتدفقة

javascript
// استخدام التدفق للملفات الكبيرة
const pipeline = sharp()
  .resize(300, 200)
  .jpeg({ quality: 80 });

fs.createReadStream('large-input.jpg')
  .pipe(pipeline)
  .pipe(fs.createWriteStream('output.jpg'));

المعالجة المتزامنة

javascript
// معالجة صور متعددة في نفس الوقت
const promises = images.map(image => 
  sharp(image)
    .resize(300, 200)
    .jpeg()
    .toBuffer()
);

const results = await Promise.all(promises);

مثال كامل

javascript
import sharp from 'sharp';
import fs from 'fs';

async function processImage() {
  try {
    // إنشاء صورة مصغرة
    await sharp('input.jpg')
      .resize(150, 150, { fit: 'cover' })
      .jpeg({ quality: 90 })
      .toFile('thumbnail.jpg');

    // إنشاء صورة بحجم متوسط
    await sharp('input.jpg')
      .resize(800, 600, { fit: 'inside' })
      .webp({ quality: 80 })
      .toFile('medium.webp');

    // إنشاء صورة بحجم كبير
    await sharp('input.jpg')
      .resize(1920, 1080, { fit: 'inside' })
      .jpeg({ quality: 85 })
      .toFile('large.jpg');

    console.log('اكتملت معالجة الصور!');
  } catch (error) {
    console.error('فشلت المعالجة:', error);
  }
}

processImage();

الخطوات التالية

الآن بعد أن تعرفت على الاستخدام الأساسي لـ Sharp، يمكنك:

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