परिचय: Sharp क्या है और इसकी आवश्यकता क्यों है?
Sharp एक हाई-परफॉर्मेंस इमेज प्रोसेसिंग लाइब्रेरी है, जो C++ में लिखी गई है और Node.js के लिए एक आसान API प्रदान करती है। यह JPEG, PNG, WebP, AVIF, TIFF और GIF फॉर्मेट की इमेज को अन्य फॉर्मेट में बदलने, उनका आकार बदलने, क्रॉप करने, घुमाने, इफेक्ट जोड़ने और बहुत कुछ करने की सुविधा देती है।
Sharp का मुख्य लाभ इसकी गति है। यह लाइब्रेरी नेटिव libvips लाइब्रेरी का उपयोग करती है, जो इसे अन्य विकल्पों (जैसे Jimp या gm) से कई गुना तेज़ बनाती है। यह निम्नलिखित के लिए एकदम सही है:
- वेब सर्वर और API — अवतार, प्रीव्यू की डायनामिक प्रोसेसिंग, अपलोड से पहले इमेज ऑप्टिमाइज़ेशन।
- बैच प्रोसेसिंग — हज़ारों इमेज को आवश्यक फॉर्मेट और आकार में बदलना।
- थंबनेल और गैलरी बनाना — तेज़ी से थंबनेल जनरेट करना।
- इमेज का वजन कम करना — गुणवत्ता खोए बिना (या नियंत्रित हानि के साथ) कम्प्रेशन।
Sharp बफ़र, स्ट्रीम और फ़ाइलों के साथ काम करता है, जो इसे किसी भी Node.js एप्लिकेशन में एकीकृत करने के लिए लचीला बनाता है।
इंस्टॉलेशन
Sharp को npm के माध्यम से इंस्टॉल किया जाता है। इस लाइब्रेरी के लिए Node.js संस्करण 12.13.0 या उससे ऊपर (14+ अनुशंसित) आवश्यक है।
npm install sharp
यदि आप yarn का उपयोग कर रहे हैं:
yarn add sharp
महत्वपूर्ण: Sharp इंस्टॉलेशन के दौरान नेटिव मॉड्यूल कंपाइल करता है। यदि आपको त्रुटियाँ आती हैं, तो सुनिश्चित करें कि build-essential (Linux पर) या Xcode Command Line Tools (macOS पर) इंस्टॉल हैं। Windows के लिए आमतौर पर Visual Studio Build Tools पर्याप्त है।
इंस्टॉलेशन के बाद, अपने प्रोजेक्ट में लाइब्रेरी को इम्पोर्ट करें:
const sharp = require('sharp');
त्वरित शुरुआत
चलिए एक सरल स्क्रिप्ट लिखते हैं जो एक इमेज लोड करती है, उसकी चौड़ाई 300 पिक्सेल करती है (अनुपात बनाए रखते हुए) और WebP फॉर्मेट में सेव करती है।
const sharp = require('sharp');
const path = require('path');
async function quickStart() {
try {
await sharp('input.jpg')
.resize(300) // चौड़ाई 300px, ऊंचाई अपने आप एडजस्ट हो जाएगी
.webp({ quality: 80 }) // 80% क्वालिटी के साथ WebP में कन्वर्ट करें
.toFile('output.webp');
console.log('इमेज सफलतापूर्वक प्रोसेस हुई!');
} catch (error) {
console.error('त्रुटि:', error);
}
}
quickStart();
यह उदाहरण मेथड चेनिंग (chaining) को दर्शाता है, जो Sharp के साथ काम करने का आधार है। प्रत्येक मेथड Sharp का एक नया इंस्टेंस लौटाता है, जिससे आप क्रमिक रूप से ट्रांसफॉर्मेशन लागू कर सकते हैं।
मुख्य मेथड और फंक्शन
नीचे Sharp के 10 प्रमुख मेथड विस्तृत विवरण, पैरामीटर और कोड उदाहरणों के साथ दिए गए हैं।
1. resize() — इमेज का आकार बदलना
यह क्या करता है: इमेज की चौड़ाई और/या ऊंचाई बदलता है। यह इमेज को दिए गए फ्रेम में क्रॉप या फिट कर सकता है।
पैरामीटर:
width(number, वैकल्पिक) — पिक्सेल में नई चौड़ाई।height(number, वैकल्पिक) — पिक्सेल में नई ऊंचाई।options(object, वैकल्पिक):fit(string) — फिट करने का मोड: 'cover' (भरें, अतिरिक्त क्रॉप करके), 'contain' (पूरी तरह फिट करें), 'fill' (स्ट्रेच करें), 'inside' (फिट होने तक छोटा करें), 'outside' (बॉर्डर से बाहर तक बड़ा करें)। डिफ़ॉल्ट 'cover' है।position(string) — क्रॉप करते समय पोजीशन: 'center', 'top', 'left', 'right', 'bottom' आदि।withoutEnlargement(boolean) — इमेज को बड़ा करने से रोकें।
उदाहरण:
// 200x200 में छोटा करें, केंद्र से क्रॉप करके
await sharp('input.jpg')
.resize(200, 200, { fit: 'cover', position: 'center' })
.toFile('output.jpg');