البدء السريع
سيساعدك هذا الدليل على البدء بسرعة مع 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، يمكنك:
- عرض وثائق واجهة برمجة التطبيقات لمعرفة جميع الطرق المتاحة
- تعلم أمثلة متقدمة لإتقان المزيد من التقنيات
- فهم تحسين الأداء لتحسين كفاءة المعالجة