Skip to content

उपयोगिता API ​

Sharp छवि प्रसंस्करण और प्रारूप रूपांतरण में सहायता के लिए कई उपयोगिता फ़ंक्शन प्रदान करता है।

प्रारूप पहचान ​

समर्थित प्रारूपों का पता लगाना ​

javascript
import sharp from 'sharp';

// समर्थित इनपुट प्रारूप प्राप्त करें
console.log('समर्थित इनपुट प्रारूप:', sharp.format);

// समर्थित आउटपुट प्रारूप प्राप्त करें
console.log('समर्थित आउटपुट प्रारूप:', sharp.format);

फ़ाइल प्रारूप जांचना ​

javascript
async function checkImageFormat(filePath) {
  try {
    const metadata = await sharp(filePath).metadata();
    return {
      format: metadata.format,
      width: metadata.width,
      height: metadata.height,
      channels: metadata.channels
    };
  } catch (error) {
    return { error: error.message };
  }
}

रंग स्थान ​

रंग स्थान स्थिरांक ​

javascript
// उपलब्ध रंग स्थान
sharp.colourspace.srgb      // sRGB
sharp.colourspace.rgb       // RGB
sharp.colourspace.cmyk      // CMYK
sharp.colourspace.grey      // ग्रेस्केल
sharp.colourspace.multiband // मल्टीबैंड
sharp.colourspace.lab       // Lab
sharp.colourspace.xyz       // XYZ
sharp.colourspace.ycbcr     // YCbCr

रंग स्थान रूपांतरण ​

javascript
// ग्रेस्केल में रूपांतरित करें
sharp('input.jpg')
  .grayscale()
  .toFile('output.jpg');

// CMYK में रूपांतरित करें
sharp('input.jpg')
  .toColourspace(sharp.colourspace.cmyk)
  .tiff()
  .toFile('output.tiff');

कर्नेल और फ़िल्टर ​

आकार समायोजन कर्नेल ​

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
// कस्टम आकार समायोजन कर्नेल का उपयोग करें
sharp('input.jpg')
  .resize(300, 200, { kernel: sharp.kernel.lanczos3 })
  .toFile('output.jpg');

स्थिति स्थिरांक ​

स्थिति विकल्प ​

javascript
// उपलब्ध स्थिति विकल्प
sharp.position.top         // शीर्ष
sharp.position.right       // दाईं ओर
sharp.position.bottom      // नीचे
sharp.position.left        // बाईं ओर
sharp.position.center      // केंद्र (डिफ़ॉल्ट)
sharp.position.centre      // केंद्र (ब्रिटिश वर्तनी)
sharp.position.north       // उत्तर (शीर्ष)
sharp.position.east        // पूर्व (दाईं ओर)
sharp.position.south       // दक्षिण (नीचे)
sharp.position.west        // पश्चिम (बाईं ओर)
sharp.position.northeast   // उत्तर-पूर्व
sharp.position.southeast   // दक्षिण-पूर्व
sharp.position.southwest   // दक्षिण-पश्चिम
sharp.position.northwest   // उत्तर-पश्चिम

चैनल ऑपरेशन ​

चैनल स्थिरांक ​

javascript
// चैनल स्थिरांक
sharp.channel.red          // लाल चैनल
sharp.channel.green        // हरा चैनल
sharp.channel.blue         // नीला चैनल
sharp.channel.alpha        // पारदर्शिता चैनल
sharp.channel.grey         // ग्रेस्केल चैनल

चैनल ऑपरेशन ​

javascript
// लाल चैनल निकालें
sharp('input.jpg')
  .extractChannel(sharp.channel.red)
  .toFile('red-channel.jpg');

// सभी चैनल निकालें
const channels = await sharp('input.jpg').separate();

त्रुटि प्रबंधन ​

त्रुटि प्रकार ​

javascript
// सामान्य Sharp त्रुटियां
sharp.errors.InputError     // इनपुट त्रुटि
sharp.errors.ProcessError   // प्रसंस्करण त्रुटि
sharp.errors.OutputError    // आउटपुट त्रुटि

त्रुटि प्रबंधन उदाहरण ​

javascript
try {
  await sharp('input.jpg')
    .resize(300, 200)
    .toFile('output.jpg');
} catch (error) {
  if (error instanceof sharp.errors.InputError) {
    console.error('इनपुट फ़ाइल त्रुटि:', error.message);
  } else if (error instanceof sharp.errors.ProcessError) {
    console.error('प्रसंस्करण त्रुटि:', error.message);
  } else if (error instanceof sharp.errors.OutputError) {
    console.error('आउटपुट त्रुटि:', error.message);
  } else {
    console.error('अज्ञात त्रुटि:', error.message);
  }
}

प्रदर्शन निगरानी ​

मेमोरी उपयोग ​

javascript
// Sharp मेमोरी उपयोग प्राप्त करें
const stats = sharp.cache();
console.log('कैश सांख्यिकी:', stats);

// कैश साफ़ करें
sharp.cache(false);

समवर्ती नियंत्रण ​

javascript
// समवर्ती सीमा सेट करें
sharp.concurrency(4); // अधिकतम 4 समवर्ती ऑपरेशन

// वर्तमान समवर्ती संख्या प्राप्त करें
console.log('वर्तमान समवर्ती संख्या:', sharp.concurrency());

उपकरण फ़ंक्शन ​

परीक्षण छवि बनाना ​

javascript
// ठोस रंग छवि बनाएं
const redImage = sharp({
  create: {
    width: 300,
    height: 200,
    channels: 3,
    background: { r: 255, g: 0, b: 0 }
  }
});

// ग्रेडिएंट छवि बनाएं
const gradient = sharp({
  create: {
    width: 300,
    height: 200,
    channels: 3,
    background: { r: 0, g: 0, b: 0 }
  }
});

छवि संयोजन ​

javascript
// कई छवियों को संयोजित करें
const composite = await sharp('background.jpg')
  .composite([
    {
      input: 'overlay.png',
      top: 100,
      left: 100
    }
  ])
  .jpeg()
  .toBuffer();

बैच प्रसंस्करण उपकरण ​

बैच आकार बदलना ​

javascript
const fs = require('fs').promises;

async function batchResize(inputDir, outputDir, width, height) {
  const files = await fs.readdir(inputDir);
  
  for (const file of files) {
    if (file.match(/\.(jpg|jpeg|png|webp)$/i)) {
      try {
        await sharp(`${inputDir}/${file}`)
          .resize(width, height)
          .jpeg({ quality: 80 })
          .toFile(`${outputDir}/${file}`);
        
        console.log(`प्रसंस्करण पूर्ण: ${file}`);
      } catch (error) {
        console.error(`${file} प्रसंस्करण विफल:`, error.message);
      }
    }
  }
}

बैच प्रारूप रूपांतरण ​

javascript
async function batchConvert(inputDir, outputDir, format) {
  const files = await fs.readdir(inputDir);
  
  for (const file of files) {
    if (file.match(/\.(jpg|jpeg|png|webp)$/i)) {
      const outputFile = file.replace(/\.[^.]+$/, `.${format}`);
      
      try {
        const image = sharp(`${inputDir}/${file}`);
        
        switch (format) {
          case 'jpg':
          case 'jpeg':
            await image.jpeg({ quality: 80 }).toFile(`${outputDir}/${outputFile}`);
            break;
          case 'png':
            await image.png().toFile(`${outputDir}/${outputFile}`);
            break;
          case 'webp':
            await image.webp({ quality: 80 }).toFile(`${outputDir}/${outputFile}`);
            break;
          case 'avif':
            await image.avif({ quality: 80 }).toFile(`${outputDir}/${outputFile}`);
            break;
        }
        
        console.log(`रूपांतरण पूर्ण: ${file} -> ${outputFile}`);
      } catch (error) {
        console.error(`${file} रूपांतरण विफल:`, error.message);
      }
    }
  }
}

सत्यापन उपकरण ​

छवि अखंडता सत्यापन ​

javascript
async function validateImage(filePath) {
  try {
    const metadata = await sharp(filePath).metadata();
    
    // मूल गुण जांचें
    if (!metadata.width || !metadata.height) {
      return { valid: false, error: 'आकार जानकारी गायब है' };
    }
    
    if (metadata.width <= 0 || metadata.height <= 0) {
      return { valid: false, error: 'अमान्य आकार' };
    }
    
    if (!metadata.format) {
      return { valid: false, error: 'प्रारूप जानकारी गायब है' };
    }
    
    // छवि प्रसंस्करण का प्रयास करें
    await sharp(filePath).resize(1, 1).toBuffer();
    
    return { valid: true, metadata };
  } catch (error) {
    return { valid: false, error: error.message };
  }
}

फ़ाइल आकार जांचना ​

javascript
const fs = require('fs');

function checkFileSize(filePath, maxSize = 10 * 1024 * 1024) { // 10MB
  const stats = fs.statSync(filePath);
  const sizeInMB = stats.size / (1024 * 1024);
  
  return {
    size: stats.size,
    sizeInMB,
    isValid: stats.size <= maxSize,
    maxSizeInMB: maxSize / (1024 * 1024)
  };
}

संबंधित लिंक ​

Apache 2.0 लाइसेंस के तहत जारी किया गया।