Skip to content

আউটপুট ফরম্যাট API

Sharp একাধিক ইমেজ আউটপুট ফরম্যাট সমর্থন করে, প্রতিটি ফরম্যাটের নিজস্ব নির্দিষ্ট অপশন এবং ব্যবহার রয়েছে।

JPEG ফরম্যাট

মৌলিক ব্যবহার

javascript
import sharp from 'sharp';

sharp('input.png')
  .jpeg()
  .toFile('output.jpg');

JPEG অপশন

javascript
sharp('input.png')
  .jpeg({
    quality: 80,           // কোয়ালিটি (1-100)
    progressive: false,     // প্রগ্রেসিভ JPEG
    chromaSubsampling: '4:4:4', // ক্রোমা সাবস্যাম্পলিং
    mozjpeg: false,        // mozjpeg এনকোডার ব্যবহার করুন
    trellisQuantisation: false, // ট্রেলিস কোয়ান্টাইজেশন
    overshootDeringing: false,  // ওভারশুট ডিরিংগিং
    optimiseScans: false,  // স্ক্যান অপ্টিমাইজ করুন
    quantisationTable: 0   // কোয়ান্টাইজেশন টেবিল
  })
  .toFile('output.jpg');

কোয়ালিটি সেটিং

javascript
// উচ্চ কোয়ালিটি
sharp('input.png').jpeg({ quality: 95 })

// মাঝারি কোয়ালিটি
sharp('input.png').jpeg({ quality: 80 })

// নিম্ন কোয়ালিটি (ছোট ফাইল)
sharp('input.png').jpeg({ quality: 50 })

PNG ফরম্যাট

মৌলিক ব্যবহার

javascript
sharp('input.jpg')
  .png()
  .toFile('output.png');

PNG অপশন

javascript
sharp('input.jpg')
  .png({
    progressive: false,     // প্রগ্রেসিভ PNG
    compressionLevel: 6,    // কম্প্রেশন লেভেল (0-9)
    adaptiveFiltering: false, // অ্যাডাপ্টিভ ফিল্টারিং
    palette: false,         // প্যালেট মোড
    quality: 100,          // কোয়ালিটি (শুধুমাত্র প্যালেট মোডের জন্য)
    colours: 256,          // রঙের সংখ্যা (শুধুমাত্র প্যালেট মোডের জন্য)
    dither: 0.5,          // ডিথার (0-1)
    force: false           // PNG আউটপুট বাধ্য করুন
  })
  .toFile('output.png');

ট্রান্সপারেন্সি হ্যান্ডলিং

javascript
// ট্রান্সপারেন্সি রাখুন
sharp('input.png')
  .png()
  .toFile('output.png');

// সাদা ব্যাকগ্রাউন্ড যোগ করুন
sharp('input.png')
  .flatten({ background: { r: 255, g: 255, b: 255 } })
  .png()
  .toFile('output.png');

WebP ফরম্যাট

মৌলিক ব্যবহার

javascript
sharp('input.jpg')
  .webp()
  .toFile('output.webp');

WebP অপশন

javascript
sharp('input.jpg')
  .webp({
    quality: 80,           // কোয়ালিটি (1-100)
    alphaQuality: 100,     // আলফা কোয়ালিটি (1-100)
    lossless: false,       // লসলেস কম্প্রেশন
    nearLossless: false,   // নিয়ার লসলেস কম্প্রেশন
    smartSubsample: false, // স্মার্ট সাবস্যাম্পলিং
    reductionEffort: 4,    // কম্প্রেশন প্রচেষ্টা (0-6)
    mixed: false,          // মিক্সড মোড
    force: false           // WebP আউটপুট বাধ্য করুন
  })
  .toFile('output.webp');

লসলেস WebP

javascript
// লসলেস কম্প্রেশন
sharp('input.png')
  .webp({ lossless: true })
  .toFile('output.webp');

// নিয়ার লসলেস কম্প্রেশন
sharp('input.png')
  .webp({ nearLossless: true, quality: 60 })
  .toFile('output.webp');

AVIF ফরম্যাট

মৌলিক ব্যবহার

javascript
sharp('input.jpg')
  .avif()
  .toFile('output.avif');

AVIF অপশন

javascript
sharp('input.jpg')
  .avif({
    quality: 80,           // কোয়ালিটি (1-100)
    lossless: false,       // লসলেস কম্প্রেশন
    effort: 4,             // কম্প্রেশন প্রচেষ্টা (0-6)
    chromaSubsampling: '4:4:4', // ক্রোমা সাবস্যাম্পলিং
    force: false           // AVIF আউটপুট বাধ্য করুন
  })
  .toFile('output.avif');

TIFF ফরম্যাট

মৌলিক ব্যবহার

javascript
sharp('input.jpg')
  .tiff()
  .toFile('output.tiff');

TIFF অপশন

javascript
sharp('input.jpg')
  .tiff({
    quality: 80,           // কোয়ালিটি (1-100)
    compression: 'jpeg',   // কম্প্রেশন পদ্ধতি
    pyramid: false,        // পিরামিড মোড
    tile: false,           // টাইল মোড
    tileSize: 256,         // টাইল সাইজ
    xres: 1,              // X রেজোলিউশন
    yres: 1,              // Y রেজোলিউশন
    resolutionUnit: 'inch', // রেজোলিউশন ইউনিট
    force: false           // TIFF আউটপুট বাধ্য করুন
  })
  .toFile('output.tiff');

কম্প্রেশন অপশন

javascript
// JPEG কম্প্রেশন
sharp('input.jpg').tiff({ compression: 'jpeg' })

// LZW কম্প্রেশন
sharp('input.jpg').tiff({ compression: 'lzw' })

// কম্প্রেশন নেই
sharp('input.jpg').tiff({ compression: 'none' })

// Deflate কম্প্রেশন
sharp('input.jpg').tiff({ compression: 'deflate' })

raw ফরম্যাট

raw পিক্সেল ডেটা আউটপুট

javascript
// RGB raw ডেটা আউটপুট করুন
const rawData = await sharp('input.jpg')
  .raw()
  .toBuffer();

// RGBA raw ডেটা আউটপুট করুন
const rawData = await sharp('input.jpg')
  .ensureAlpha()
  .raw()
  .toBuffer();

মাল্টি-ফরম্যাট আউটপুট

একই সাথে একাধিক ফরম্যাট আউটপুট

javascript
const image = sharp('input.jpg').resize(800, 600);

// একাধিক ফরম্যাট আউটপুট করুন
await Promise.all([
  image.clone().jpeg({ quality: 80 }).toFile('output.jpg'),
  image.clone().png().toFile('output.png'),
  image.clone().webp({ quality: 80 }).toFile('output.webp'),
  image.clone().avif({ quality: 80 }).toFile('output.avif')
]);

রেসপন্সিভ ইমেজ

javascript
async function generateResponsiveImages(inputPath) {
  const sizes = [320, 640, 1280, 1920];
  const formats = ['jpeg', 'webp', 'avif'];
  
  const promises = [];
  
  for (const size of sizes) {
    for (const format of formats) {
      const image = sharp(inputPath).resize(size);
      
      switch (format) {
        case 'jpeg':
          promises.push(
            image.clone().jpeg({ quality: 80 })
              .toFile(`output-${size}.jpg`)
          );
          break;
        case 'webp':
          promises.push(
            image.clone().webp({ quality: 80 })
              .toFile(`output-${size}.webp`)
          );
          break;
        case 'avif':
          promises.push(
            image.clone().avif({ quality: 80 })
              .toFile(`output-${size}.avif`)
          );
          break;
      }
    }
  }
  
  await Promise.all(promises);
}

ফরম্যাট ডিটেকশন

ফাইল এক্সটেনশন অনুযায়ী স্বয়ংক্রিয় ফরম্যাট নির্বাচন

javascript
function getOutputFormat(filename) {
  const ext = filename.split('.').pop().toLowerCase();
  
  switch (ext) {
    case 'jpg':
    case 'jpeg':
      return 'jpeg';
    case 'png':
      return 'png';
    case 'webp':
      return 'webp';
    case 'avif':
      return 'avif';
    case 'tiff':
    case 'tif':
      return 'tiff';
    default:
      return 'jpeg';
  }
}

async function convertImage(inputPath, outputPath) {
  const format = getOutputFormat(outputPath);
  const image = sharp(inputPath);
  
  switch (format) {
    case 'jpeg':
      await image.jpeg({ quality: 80 }).toFile(outputPath);
      break;
    case 'png':
      await image.png().toFile(outputPath);
      break;
    case 'webp':
      await image.webp({ quality: 80 }).toFile(outputPath);
      break;
    case 'avif':
      await image.avif({ quality: 80 }).toFile(outputPath);
      break;
    case 'tiff':
      await image.tiff({ compression: 'jpeg' }).toFile(outputPath);
      break;
  }
}

পারফরমেন্স অপ্টিমাইজেশন

স্ট্রিম আউটপুট

javascript
const fs = require('fs');

// স্ট্রিম প্রসেসিং
fs.createReadStream('input.jpg')
  .pipe(sharp().jpeg({ quality: 80 }))
  .pipe(fs.createWriteStream('output.jpg'));

মেমরি অপ্টিমাইজেশন

javascript
// ফাইলের পরিবর্তে Buffer ব্যবহার করুন
const buffer = await sharp('input.jpg')
  .jpeg({ quality: 80 })
  .toBuffer();

// সরাসরি রেসপন্সে আউটপুট করুন
app.get('/image', async (req, res) => {
  const buffer = await sharp('input.jpg')
    .resize(300, 200)
    .jpeg({ quality: 80 })
    .toBuffer();
    
  res.set('Content-Type', 'image/jpeg');
  res.send(buffer);
});

সম্পর্কিত লিঙ্ক

Apache 2.0 লাইসেন্সের অধীনে রিলিজ করা হয়েছে।