छवि प्रसंस्करण API
Sharp समृद्ध छवि प्रसंस्करण कार्यक्षमता प्रदान करता है, जिसमें आकार बदलना, काटना, घुमाना, फ़िल्टर आदि ऑपरेशन शामिल हैं।
आकार बदलना (resize)
मूल उपयोग
javascript
import sharp from 'sharp';
// निर्दिष्ट आकार में समायोजित करें
sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
// केवल चौड़ाई निर्दिष्ट करें, ऊंचाई स्वचालित रूप से गणना की जाएगी
sharp('input.jpg')
.resize(300)
.toFile('output.jpg');
// केवल ऊंचाई निर्दिष्ट करें, चौड़ाई स्वचालित रूप से गणना की जाएगी
sharp('input.jpg')
.resize(null, 200)
.toFile('output.jpg');आकार समायोजन विकल्प
javascript
sharp('input.jpg')
.resize(300, 200, {
// आकार समायोजन एल्गोरिदम
kernel: sharp.kernel.lanczos3,
// स्थिति
position: 'center',
// पृष्ठभूमि रंग
background: { r: 255, g: 255, b: 255, alpha: 1 },
// पहलू अनुपात बनाए रखना है या नहीं
fit: 'cover',
// बढ़ाना है या नहीं
withoutEnlargement: true,
// कम करना है या नहीं
withoutReduction: false
})
.toFile('output.jpg');आकार समायोजन एल्गोरिदम
javascript
// उपलब्ध आकार समायोजन एल्गोरिदम
sharp.kernel.nearest // निकटतम पड़ोसी
sharp.kernel.cubic // क्यूबिक इंटरपोलेशन
sharp.kernel.mitchell // Mitchell-Netravali
sharp.kernel.lanczos2 // Lanczos 2-lobed
sharp.kernel.lanczos3 // Lanczos 3-lobed (डिफ़ॉल्ट)फिट मोड
javascript
// cover: पहलू अनुपात बनाए रखें, अतिरिक्त भाग काटें
sharp('input.jpg').resize(300, 200, { fit: 'cover' })
// contain: पहलू अनुपात बनाए रखें, पृष्ठभूमि जोड़ें
sharp('input.jpg').resize(300, 200, { fit: 'contain' })
// fill: निर्दिष्ट आकार में खींचें
sharp('input.jpg').resize(300, 200, { fit: 'fill' })
// inside: पहलू अनुपात बनाए रखें, मूल छवि आकार से अधिक नहीं
sharp('input.jpg').resize(300, 200, { fit: 'inside' })
// outside: पहलू अनुपात बनाए रखें, कम से कम निर्दिष्ट आकार तक पहुंचें
sharp('input.jpg').resize(300, 200, { fit: 'outside' })काटना (extract)
javascript
// निर्दिष्ट क्षेत्र काटें
sharp('input.jpg')
.extract({ left: 100, top: 100, width: 300, height: 200 })
.toFile('output.jpg');
// काटें और आकार बदलें
sharp('input.jpg')
.extract({ left: 100, top: 100, width: 300, height: 200 })
.resize(150, 100)
.toFile('output.jpg');घुमाना (rotate)
javascript
// 90 डिग्री घुमाएं
sharp('input.jpg')
.rotate(90)
.toFile('output.jpg');
// घुमाएं और पृष्ठभूमि रंग निर्दिष्ट करें
sharp('input.jpg')
.rotate(45, { background: { r: 255, g: 255, b: 255, alpha: 1 } })
.toFile('output.jpg');फ्लिप (flip/flop)
javascript
// लंबवत फ्लिप
sharp('input.jpg')
.flip()
.toFile('output.jpg');
// क्षैतिज फ्लिप
sharp('input.jpg')
.flop()
.toFile('output.jpg');धुंधला (blur)
javascript
// गाऊसी धुंधला
sharp('input.jpg')
.blur(5)
.toFile('output.jpg');
// तीक्ष्ण करना
sharp('input.jpg')
.sharpen()
.toFile('output.jpg');
// कस्टम तीक्ष्ण पैरामीटर
sharp('input.jpg')
.sharpen({
sigma: 1,
flat: 1,
jagged: 2
})
.toFile('output.jpg');फ़िल्टर (filters)
ग्रेस्केल
javascript
sharp('input.jpg')
.grayscale()
.toFile('output.jpg');उलटना
javascript
sharp('input.jpg')
.negate()
.toFile('output.jpg');गामा सुधार
javascript
sharp('input.jpg')
.gamma(2.2)
.toFile('output.jpg');चमक/कंट्रास्ट
javascript
sharp('input.jpg')
.modulate({
brightness: 1.2, // चमक (0.1-2.0)
saturation: 0.8, // संतृप्ति (0-2.0)
hue: 180 // ह्यू (0-360)
})
.toFile('output.jpg');रंग ऑपरेशन
टिंट
javascript
sharp('input.jpg')
.tint({ r: 255, g: 0, b: 0 })
.toFile('output.jpg');रंग मैट्रिक्स
javascript
sharp('input.jpg')
.recomb([
[0.3588, 0.7044, 0.1368],
[0.2990, 0.5870, 0.1140],
[0.0000, 0.0000, 1.0000]
])
.toFile('output.jpg');चैनल ऑपरेशन
चैनल अलग करना
javascript
// लाल चैनल प्राप्त करें
sharp('input.jpg')
.extractChannel('red')
.toFile('red-channel.jpg');
// सभी चैनल प्राप्त करें
const channels = await sharp('input.jpg').separate();चैनल मर्ज करना
javascript
// अलग-अलग चैनल फ़ाइलों से मर्ज करें
sharp('red.jpg')
.joinChannel(['green.jpg', 'blue.jpg'])
.toFile('merged.jpg');संयोजन ऑपरेशन
javascript
// श्रृंखला ऑपरेशन
sharp('input.jpg')
.resize(800, 600)
.rotate(90)
.blur(2)
.sharpen()
.jpeg({ quality: 80 })
.toFile('output.jpg');प्रदर्शन अनुकूलन
स्ट्रीम प्रसंस्करण
javascript
const fs = require('fs');
fs.createReadStream('input.jpg')
.pipe(sharp().resize(300, 200))
.pipe(fs.createWriteStream('output.jpg'));बैच प्रसंस्करण
javascript
const sharp = require('sharp');
const fs = require('fs').promises;
async function processImages() {
const files = await fs.readdir('./images');
const promises = files
.filter(file => file.endsWith('.jpg'))
.map(async file => {
await sharp(`./images/${file}`)
.resize(300, 200)
.jpeg({ quality: 80 })
.toFile(`./output/${file}`);
});
await Promise.all(promises);
}त्रुटि प्रबंधन
javascript
try {
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
} catch (error) {
console.error('छवि प्रसंस्करण विफल:', error.message);
}