Node.js में छवियों के साथ कार्य के लिए Sharp लाइब्रेरी
आधुनिक वेब डेवलपमेंट में, सर्वर-साइड पर छवि प्रसंस्करण एक महत्वपूर्ण कार्य है। Node.js, अपनी इवेंट-संचालित आर्किटेक्चर के कारण, इस कार्य को अच्छी तरह से संभालता है। छवियों के साथ कार्य करने के लिए कई लाइब्रेरियों में से, Sharp एक विशेष स्थान रखता है - यह एक उच्च-प्रदर्शन वाला ओपन-सोर्स मॉड्यूल है जो C++ में लिखा गया है और libvips लाइब्रेरी का उपयोग करता है।
Sharp क्या है?
Sharp तेज़ छवि प्रसंस्करण के लिए एक Node.js मॉड्यूल है। यह JPEG, PNG, WebP, AVIF, TIFF और GIF फॉर्मेट को सपोर्ट करता है। मुख्य क्षमताओं में आकार बदलना, क्रॉप करना, घुमाना, रंग सुधार, वॉटरमार्क लगाना और फॉर्मेट के बीच रूपांतरण शामिल हैं। libvips के उपयोग के कारण, Sharp समान लाइब्रेरियों (जैसे ImageMagick या GraphicsMagick) की तुलना में 4-5 गुना तेज़ काम करता है।
स्थापना
स्थापना npm के माध्यम से की जाती है। सुनिश्चित करें कि सिस्टम में C++ कंपाइलर (gcc या clang) और libvips स्थापित हैं (कुछ ऑपरेटिंग सिस्टम पर पूर्व-स्थापना आवश्यक है)।
npm install sharpस्थापना के बाद, आप मॉड्यूल को अपने प्रोजेक्ट में आयात कर सकते हैं:
const sharp = require('sharp');छवियों के साथ मुख्य संचालन
1. आकार बदलना (resize)
सबसे सामान्य कार्य छवि को छोटा या बड़ा करना है। Sharp आपको चौड़ाई, ऊँचाई या दोनों मान एक साथ सेट करने की अनुमति देता है। यदि केवल एक पैरामीटर निर्दिष्ट किया जाता है, तो दूसरा आनुपातिक रूप से गणना किया जाएगा।
const sharp = require('sharp');
async function resizeImage() { try { await sharp('input.jpg') .resize(300, 200) // चौड़ाई 300px, ऊँचाई 200px .toFile('output-resized.jpg'); console.log('छवि का आकार बदल दिया गया'); } catch (error) { console.error('त्रुटि:', error); }}
resizeImage();अनुपात बनाए रखने के लिए fit का उपयोग करें:
const sharp = require('sharp');
async function resizeWithFit() { await sharp('input.jpg') .resize({ width: 300, height: 200, fit: 'inside' // 'cover', 'contain', 'fill', 'inside', 'outside' }) .toFile('output-fit.jpg');}
resizeWithFit();2. क्रॉप करना (crop)
क्रॉप करने से छवि के अनावश्यक भागों को हटाया जा सकता है। Sharp निर्दिष्ट निर्देशांकों द्वारा या रणनीति के अनुसार (जैसे केंद्रीय क्रॉप) क्रॉप करने का समर्थन करता है।
const sharp = require('sharp');
async function cropImage() { await sharp('input.jpg') .extract({ left: 100, top: 50, width: 400, height: 300 }) .toFile('output-cropped.jpg');}
cropImage();crop विकल्प के साथ resize का भी उपयोग किया जा सकता है:
const sharp = require('sharp');
async function cropWithResize() { await sharp('input.jpg') .resize(200, 200, { fit: 'cover', position: 'centre' }) .toFile('output-cover.jpg');}
cropWithResize();3. फॉर्मेट रूपांतरण
Sharp आपको आसानी से छवियों को एक फॉर्मेट से दूसरे में बदलने की अनुमति देता है। बस आउटपुट फ़ाइल में एक्सटेंशन निर्दिष्ट करें या .toFormat() विधि का उपयोग करें।
const sharp = require('sharp');
async function convertToWebP() { await sharp('input.png') .toFormat('webp') .toFile('output.webp');}
async function convertToJpeg() { await sharp('input.webp') .jpeg({ quality: 80 }) .toFile('output.jpg');}
convertToWebP();convertToJpeg();4. मेटाडेटा के साथ कार्य
आप छवि के मेटाडेटा निकाल सकते हैं: आयाम, रंग स्थान, DPI, EXIF-डेटा आदि।
const sharp = require('sharp');
async function getMetadata() { const metadata = await sharp('input.jpg').metadata(); console.log('मेटाडेटा:', metadata); // { format: