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);
}পারফরমেন্স টিপস
- ইনস্ট্যান্স পুনরায় ব্যবহার: যতটা সম্ভব Sharp ইনস্ট্যান্স পুনরায় ব্যবহার করুন
- স্ট্রিম প্রসেসিং: বড় ফাইলের জন্য স্ট্রিম প্রসেসিং ব্যবহার করুন
- মেমরি ম্যানেজমেন্ট: প্রয়োজন নেই এমন ইনস্ট্যান্সগুলি সময়মতো মুক্ত করুন
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');