Skip to content

Sharp কনস্ট্রাক্টর

Sharp হল Node.js-এর একটি উচ্চ-পারফরমেন্স ইমেজ প্রসেসিং লাইব্রেরি। কনস্ট্রাক্টর হল Sharp ব্যবহার করার সূচনা বিন্দু।

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

javascript
import sharp from 'sharp';

// ফাইল পাথ থেকে Sharp ইনস্ট্যান্স তৈরি করুন
const image = sharp('input.jpg');

// Buffer থেকে Sharp ইনস্ট্যান্স তৈরি করুন
const image = sharp(inputBuffer);

// Stream থেকে Sharp ইনস্ট্যান্স তৈরি করুন
const image = sharp(inputStream);

কনস্ট্রাক্টর প্যারামিটার

ইনপুট সোর্স

Sharp কনস্ট্রাক্টর বিভিন্ন ইনপুট সোর্স গ্রহণ করে:

javascript
// ফাইল পাথ
sharp('input.jpg')

// Buffer
sharp(buffer)

// Stream
sharp(stream)

// URL
sharp('https://example.com/image.jpg')

// একাধিক ইনপুট সোর্স
sharp(['input1.jpg', 'input2.jpg'])

অপশন অবজেক্ট

javascript
sharp(input, {
  // ইনপুট অপশন
  input: {
    failOnError: false,
    limitInputPixels: 268402689,
    sequentialRead: false
  },
  
  // পেজ অপশন (মাল্টি-পেজ ইমেজের জন্য)
  pages: -1,
  
  // raw অপশন
  raw: {
    width: 1920,
    height: 1080,
    channels: 3
  }
})

ইনপুট অপশন

failOnError

  • টাইপ: boolean
  • ডিফল্ট মান: true
  • বর্ণনা: ত্রুটি দেখা দিলে এক্সেপশন নিক্ষেপ করবে কিনা
javascript
sharp('input.jpg', { failOnError: false })
  .resize(300, 200)
  .toFile('output.jpg')
  .catch(err => console.log('প্রসেসিং ব্যর্থ:', err));

limitInputPixels

  • টাইপ: number
  • ডিফল্ট মান: 268402689 (16384 x 16384)
  • বর্ণনা: ইনপুট ইমেজের পিক্সেল সংখ্যা সীমাবদ্ধ করুন
javascript
sharp('large-image.jpg', { 
  limitInputPixels: 100000000 
})

sequentialRead

  • টাইপ: boolean
  • ডিফল্ট মান: false
  • বর্ণনা: ইমেজ ডেটা ক্রমানুসারে পড়বে কিনা
javascript
sharp('input.jpg', { sequentialRead: true })

মাল্টি-পেজ ইমেজ

মাল্টি-পেজ ইমেজের জন্য (যেমন TIFF, PDF), আপনি কোন পেজ প্রসেস করতে চান তা নির্দিষ্ট করতে পারেন:

javascript
// সব পেজ প্রসেস করুন
sharp('multi-page.tiff', { pages: -1 })

// নির্দিষ্ট পেজ প্রসেস করুন (0 থেকে শুরু)
sharp('multi-page.tiff', { pages: 0 })

// একাধিক পেজ প্রসেস করুন
sharp('multi-page.tiff', { pages: [0, 2, 4] })

raw ইমেজ ডেটা

raw ইমেজ ডেটা প্রসেস করার সময়, আপনাকে আকার এবং চ্যানেল সংখ্যা নির্দিষ্ট করতে হবে:

javascript
sharp(rawBuffer, {
  raw: {
    width: 1920,
    height: 1080,
    channels: 3  // RGB
  }
})

এরর হ্যান্ডলিং

javascript
try {
  const image = sharp('input.jpg');
  await image.toFile('output.jpg');
} catch (error) {
  console.error('ইমেজ প্রসেসিং ব্যর্থ:', error.message);
}

পারফরমেন্স টিপস

  1. ইনস্ট্যান্স পুনরায় ব্যবহার: যতটা সম্ভব Sharp ইনস্ট্যান্স পুনরায় ব্যবহার করুন
  2. স্ট্রিম প্রসেসিং: বড় ফাইলের জন্য স্ট্রিম প্রসেসিং ব্যবহার করুন
  3. মেমরি ম্যানেজমেন্ট: প্রয়োজন নেই এমন ইনস্ট্যান্সগুলি সময়মতো মুক্ত করুন
javascript
// ভালো অনুশীলন
const sharp = require('sharp');
const image = sharp('input.jpg');

// একাধিক অপারেশন প্রসেস করুন
await image
  .resize(300, 200)
  .jpeg({ quality: 80 })
  .toFile('output1.jpg');

await image
  .resize(150, 100)
  .png()
  .toFile('output2.jpg');

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

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