PNG ফাইল বড় হওয়ার কারণ ও সমাধানের উপায়
PNG হলো লসলেস (lossless), আর ঠিক এই কারণেই ফাইলগুলো এত বিশাল হয়। তিনটি সমাধান এবং প্রতিটির জন্য আপনাকে কী ত্যাগ করতে হবে তা এখানে দেওয়া হলো।
আপনার PNG ফাইলটি 8 MB হওয়ার কারণ হলো PNG প্রতিটি পিক্সেল হুবহু সংরক্ষণ করে এবং রেটিনা রেজোলিউশনে একটি ফুল পেজ স্ক্রিনশটে আসলেই এত বেশি তথ্য থাকে। এই ফরম্যাটটি কোনো তথ্য বাদ দেয় না, যা PNG-এর মূল বৈশিষ্ট্য এবং একই সাথে এর সবচেয়ে বড় সমস্যা।
এটি ঠিক করার ৩টি উপায় রয়েছে এবং প্রতিটিতে আপনাকে ভিন্ন কিছু ত্যাগ করতে হবে। ডাইমেনশন বা আকার কমালে রেজোলিউশন কমবে যা সম্ভবত আপনার প্রয়োজনই ছিল না। কালার ডেপথ কমালে ছবির রঙের নির্ভুলতা কমে যাবে। ফরম্যাট পরিবর্তন করলে ব্রাউজারের বাইরে সামঞ্জস্যতা (compatibility) কমতে পারে। ছবিটি কী কাজে ব্যবহার করা হবে তার ওপর ভিত্তি করে সঠিক উপায়টি বেছে নিন।
আপনার ৩টি বিকল্প
- ডাইমেনশন বা আকার কমান। এটি সম্পূর্ণ ফ্রি এবং সাধারণত সবচেয়ে বেশি কার্যকর। কারোই একটি 5000 পিক্সেলের স্ক্রিনশটের প্রয়োজন হয় না।
- কালার ডেপথ বা রঙের গভীরতা কমান। এটি ফ্ল্যাট গ্রাফিক্সের ক্ষেত্রে ভালো কাজ করে, তবে ছবির ক্ষেত্রে বেশ খারাপ দেখায়।
- ফরম্যাট পরিবর্তন করুন। WebP ফরম্যাটে ট্রান্সপারেন্সি বা স্বচ্ছতা বজায় থাকে এবং এটি সাধারণত ২৫ থেকে ৩৫ শতাংশ ছোট হয়।
কেন PNG ফাইলের সাইজ এত দ্রুত বৃদ্ধি পায়
PNG ফাইলের সাইজ সরাসরি পিক্সেল সংখ্যার সাথে বৃদ্ধি পায়, কারণ প্রতিটি পিক্সেলকে হুবহু বর্ণনা করতে হয়। প্রস্থ এবং উচ্চতা দ্বিগুণ করলে পিক্সেলের সংখ্যা চারগুণ হয়ে যায় এবং ফাইলের সাইজও প্রায় চারগুণ বেড়ে যায়।
একটি হাই রেজোলিউশন মনিটর থেকে নেওয়া 5120 x 2880 স্ক্রিনশটে ১৪.৭ মিলিয়ন পিক্সেল থাকে। কম্প্রেশনের আগে প্রতি পিক্সেলে ৩ বাইট হিসেবে এতে ৪৪ MB র ডেটা থাকে এবং PNG কম্প্রেশন সাধারণত এটিকে ৪ MB থেকে ১২ MB-এর মধ্যে নামিয়ে আনে, যা নির্ভর করে ছবিতে কতটা ফ্ল্যাট কালার রয়েছে তার ওপর। তাই একটি 8 MB সাইজের ফাইল পাওয়া কোনো ত্রুটি নয়, বরং এটি স্বাভাবিক।
সমাধান ১: ডাইমেনশন বা আকার কমান
অন্য যেকোনো কিছু চেষ্টা করার আগে ছবিটিকে তার সর্বোচ্চ প্রদর্শিত আকারে রিসাইজ করুন, যা ফাইলের বেশিরভাগ ওজন কমিয়ে দেয়। এটি সবচেয়ে কম পরিশ্রমে সবচেয়ে বেশি কার্যকর সমাধান।
| মূল সাইজ | রিসাইজড সাইজ | বাদ দেওয়া পিক্সেল | স্বাভাবিক ফাইল সাইজ |
|---|---|---|---|
| 5120 x 2880 | 2560 x 1440 | 75 percent | 8 MB to 2 MB |
| 3840 x 2160 | 1920 x 1080 | 75 percent | 5 MB to 1.3 MB |
| 2560 x 1440 | 1280 x 720 | 75 percent | 2 MB to 500 KB |
| 4000 x 3000 photo | 1600 x 1200 | 84 percent | 18 MB to 2.9 MB |
ছবিটি পেজে সর্বোচ্চ কত চওড়া দেখাবে তা পরিমাপ করুন, হাই ডেনসিটি স্ক্রিনের জন্য সেটিকে দ্বিগুণ করুন এবং সেই অনুযায়ী রিসাইজ করুন। ৮০০ পিক্সেল চওড়া দেখাবে এমন একটি স্ক্রিনশটের জন্য ১৬০০ পিক্সেলই যথেষ্ট, এর বেশি কিছুর প্রয়োজন নেই।
সমাধান ২: কালার ডেপথ বা রঙের গভীরতা কমান
২৪ বিট কালার থেকে ৮ বিট প্যালেটে রূপান্তর করলে একটি PNG ফাইলের সাইজ ৫০ থেকে ৭০ শতাংশ পর্যন্ত কমে যায়, তবে এটি কেবল সীমিত রঙের ছবির ক্ষেত্রেই কাজ করে। ইন্টারফেসের স্ক্রিনশট, ডায়াগ্রাম, লোগো এবং চার্ট এগুলোর জন্য আদর্শ উদাহরণ।
এই পদ্ধতিতে সম্পূর্ণ রঙের মান সংরক্ষণ করার পরিবর্তে সর্বোচ্চ ২৫৬টি রঙের একটি প্যালেট সংরক্ষণ করা হয় এবং প্রতি পিক্সেলের জন্য সেটির রেফারেন্স ব্যবহার করা হয়। একটি ইউজার ইন্টারফেস স্ক্রিনশটে ২৫৬টির বেশি আলাদা রঙ খুব কমই থাকে, তাই এই পরিবর্তনটি খালি চোখে ধরা পড়ে না। তবে একটি ছবিতে হাজার হাজার রঙ থাকে, তাই সেখানে এই পদ্ধতি ব্যবহার করলে আকাশ বা ত্বকের রঙে স্পষ্ট দাগ বা ব্যান্ডিং দেখা যায়।
সমাধান ৩: ফরম্যাট পরিবর্তন করুন
ওয়েবে ব্যবহারের জন্য WebP ফরম্যাটে রূপান্তর করুন, যা ট্রান্সপারেন্সি বজায় রাখে এবং সাধারণত PNG-এর চেয়ে ২৫ থেকে ৩৫ শতাংশ ছোট হয়। কেবল তখনই JPG-তে রূপান্তর করুন যখন ছবিটি কোনো সাধারণ ছবি হয় এবং এতে কোনো ট্রান্সপারেন্সির প্রয়োজন না থাকে।
- গ্রাফিক্স এবং স্ক্রিনশটের জন্য WebP lossless ব্যবহার করুন, যা প্রতিটি পিক্সেল হুবহু বজায় রাখে এবং তবুও ২০ থেকে ৩০ শতাংশ সাইজ বাঁচায়।
- ছবির মতো PNG ফাইলের জন্য WebP lossy ব্যবহার করুন, যেখানে ফাইলের সাইজ ৭০ শতাংশ বা তারও বেশি কমানো সম্ভব।
- কোনো ট্রান্সপারেন্সি নেই এমন ছবির জন্য JPG ব্যবহার করুন, যেখানে শুরু থেকেই PNG ব্যবহার করা একটি ভুল সিদ্ধান্ত ছিল।
- ১০০ KB-এর চেয়ে বড় এবং ভারী ছবির জন্য AVIF ব্যবহার করুন, যা ফাইলটিকে আরও বেশি কম্প্রেস করতে পারে।
- লোগো এবং আইকনের জন্য Vector graphics ব্যবহার করুন, যেখানে একটি SVG ফাইলের সাইজ যেকোনো রাস্টার ফরম্যাটের তুলনায় খুবই সামান্য হতে পারে।
সবচেয়ে সাধারণ কারণ: একটি ছবিকে PNG হিসেবে সেভ করা
একটি ছবিকে PNG হিসেবে সেভ করলে তা একই ছবির JPEG ফরম্যাটের চেয়ে ৩ থেকে ৫ গুণ বড় হয়, অথচ দৃশ্যত কোনো পার্থক্য থাকে না। এই একটি ভুলের কারণেই বেশিরভাগ ক্ষেত্রে অতিরিক্ত বড় সাইজের PNG ফাইল তৈরি হয়।
PNG কম্প্রেশন মূলত একই ধরনের রঙের পুনরাবৃত্তি খোঁজে, কিন্তু ছবির পিক্সেল লেভেলে এমন পুনরাবৃত্তি প্রায় থাকেই না, কারণ প্রতিটি পিক্সেল তার পাশের পিক্সেল থেকে সামান্য আলাদা হয়। ফলে এই ফরম্যাটটি লক্ষ লক্ষ প্রায়-অনন্য মান হুবহু সংরক্ষণ করতে বাধ্য হয়। ছবিগুলোকে JPEG বা WebP হিসেবে সেভ করুন এবং PNG কেবল সেইসব ছবির জন্য রাখুন যেগুলোতে আসলেই ফ্ল্যাট কালার বা ট্রান্সপারেন্সি রয়েছে।
গুণমান না হারিয়ে কীভাবে একটি PNG ফাইলের সাইজ কমাবেন
গুণমান অক্ষুণ্ণ রেখে (lossless) একটি PNG ফাইলের সাইজ কমাতে পর্যায়ক্রমে এই ৫টি ধাপ অনুসরণ করুন।
- অপ্রয়োজনীয় অংশ ক্রপ করে বাদ দিন, কারণ খালি মার্জিনও ফাইলের সাইজ বাড়িয়ে দেয়।
- ছবিটি সর্বোচ্চ যে আকারে প্রদর্শিত হবে সেই আকারে রিসাইজ করুন, হাই ডেনসিটি স্ক্রিনের জন্য আকার দ্বিগুণ রাখুন।
- ছবিটিতে আসলেই ট্রান্সপারেন্সির প্রয়োজন আছে কিনা তা যাচাই করুন, কারণ ব্যাকগ্রাউন্ড ফ্ল্যাট বা এক রঙের হলে ফাইলটি আরও ভালো কম্প্রেস হয়।
- ছবিটি যদি কোনো সাধারণ ছবির চেয়ে গ্রাফিক্স বা ইলাস্ট্রেশন হয়, তবে এর কালার প্যালেট কমিয়ে দিন।
- WebP lossless ফরম্যাটে রূপান্তর করুন, যা ছবির গুণমান হুবহু বজায় রাখে এবং সাধারণত ২০ থেকে ৩০ শতাংশ ছোট হয়।
সাধারণত ১ এবং ২ নম্বর ধাপ দুটিই সমস্যার সমাধান করে দেয়। বাকি ধাপগুলো তখন গুরুত্বপূর্ণ হয়ে ওঠে যখন কোনো ছবিকে অনেক বড় আকারে রাখতে হয়, যেমন ডকুমেন্টেশনের কোনো ফুল পেজ স্ক্রিনশট।
আধুনিক স্ক্রিনে স্ক্রিনশট কেন এত বড় হয়
হাই ডেনসিটি ডিসপ্লেগুলো লজিক্যাল রেজোলিউশনের চেয়ে ২ বা ৩ গুণ বেশি রেজোলিউশনে ক্যাপচার করে, তাই ১২০০ পিক্সেল চওড়া একটি উইন্ডোর স্ক্রিনশট ২৪০০ বা ৩৬০০ পিক্সেলে সেভ হয়। ফলে ফাইলটি উইন্ডোটির দৃশ্যমান আকারের চেয়ে অনেক বড় হয়ে যায়।
এই অতিরিক্ত রেজোলিউশন কেবল তখনই কার্যকর হয় যখন স্ক্রিনশটটি অন্য কোনো হাই ডেনসিটি স্ক্রিনে দেখা হবে, অন্যথায় এটি অপচয়। ডকুমেন্টেশন এবং সাপোর্ট আর্টিকেলের জন্য, এটিকে পুনরায় লজিক্যাল সাইজে রিসাইজ করলে ডাইমেনশন অর্ধেক হয়ে যায় এবং ফাইলের সাইজ প্রায় ৭৫ শতাংশ কমে যায়, অথচ বেশিরভাগ পাঠকের কাছে এটি দেখতে একই রকম মনে হবে।
কখন PNG ফাইলটি বড় আকারেই রাখা উচিত
যখন ছবিটি একটি মাস্টার ফাইল, প্রিন্ট অ্যাসেট বা এমন একটি সোর্স ফাইল যা পরবর্তীতে এডিট করা হবে, তখন সেটিকে সম্পূর্ণ আকারের PNG হিসেবেই রাখুন। কম্প্রেশনের সিদ্ধান্তগুলো ডেলিভারি কপির ক্ষেত্রে প্রযোজ্য, মূল ফাইলের ক্ষেত্রে নয়।
ডিজাইন ফাইল, লোগো মাস্টার, প্রিন্ট আর্টওয়ার্ক এবং স্ক্যান করা ডকুমেন্ট: এসবের ক্ষেত্রে বড় সাইজ হওয়াটাই স্বাভাবিক। এগুলোকে সম্পূর্ণ রেজোলিউশনে সংরক্ষণ করুন এবং প্রতিটি ব্যবহারের জন্য ছোট কপি তৈরি করে নিন। ভুলটি হয় তখন যখন মূল মাস্টার ফাইলটিই সরাসরি পাবলিশ বা আপলোড করা হয়, কারণ একটি মাস্টার ফাইল আপনার ডিস্কে একবারই জায়গা নেয়, কিন্তু সেটি পাবলিশ করলে প্রতিবার ভিজিটের জন্য ব্যান্ডউইথ খরচ হয়।
ট্রান্সপারেন্সি বা স্বচ্ছতার খরচ ধারণার চেয়েও বেশি
একটি ট্রান্সপারেন্সি চ্যানেল প্রতিটি পিক্সেলে চতুর্থ একটি মান যোগ করে, যা কম্প্রেশনের আগে র ডেটার পরিমাণ প্রায় ৩৩ শতাংশ বাড়িয়ে দেয়। অনেক PNG ফাইল কোনো প্রয়োজন ছাড়াই এই চ্যানেলটি বহন করে।
স্ক্রিনশট, এক্সপোর্ট করা চার্ট এবং সাদা ব্যাকগ্রাউন্ডের ওপর ফ্ল্যাট করা ছবিগুলোতে প্রায়শই একটি আলফা চ্যানেল থাকে যা সম্পূর্ণ অপেক বা অস্বচ্ছ। এটি বাদ দিলে ছবির কোনো দৃশ্যমান ক্ষতি হয় না এবং ফাইলের সাইজও উল্লেখযোগ্যভাবে কমে যায়। এই চ্যানেলটি আসলেই প্রয়োজন কিনা তা নিশ্চিত করার আগে ছবিটি পরীক্ষা করে নিন, কারণ সাদা পেজে রাখা বেশিরভাগ ছবির জন্যই এর প্রয়োজন হয় না।
একটি PNG কম্প্রেস করলে কি গুণমান নষ্ট হয়
Lossless PNG অপ্টিমাইজেশনে কোনো গুণমান নষ্ট হয় না, তবে রঙ বা ডাইমেনশন কমালে ছবিটি স্থায়ীভাবে পরিবর্তিত হয়। এই ৩টি পদ্ধতিকে প্রায়ই একসাথে বর্ণনা করা হলেও এগুলো এক নয়।
Lossless অপ্টিমাইজেশন মূলত ফাইলটি কীভাবে ডেটা সংরক্ষণ করছে তা পুনর্গঠন করে এবং পিক্সেল হুবহু বজায় রেখে সাধারণত ৫ থেকে ২০ শতাংশ সাইজ বাঁচায়। অন্যদিকে, প্যালেট কমানো এবং রিসাইজ করা ছবির মূল উপাদানকে পরিবর্তন করে, যা ডেলিভারি কপির জন্য গ্রহণযোগ্য হলেও মাস্টার ফাইলের জন্য একেবারেই নয়। পরিবর্তনটি রিভার্সিবল বা পূর্বাবস্থায় ফিরিয়ে নেওয়ার যোগ্য না হলে সবসময় মূল ফাইলটি সংরক্ষণ করুন।
অতিরিক্ত বড় সাইজের PNG ফাইলের একটি সম্পূর্ণ ফোল্ডার ঠিক করা
সম্পূর্ণ ফোল্ডারটি একসাথে প্রসেস করুন, কারণ অতিরিক্ত বড় সাইজের PNG ফাইলগুলো সাধারণত একই সোর্স থেকে গ্রুপ আকারে আসে। কোনো ডকুমেন্টেশন সেট, স্ক্রিনশট লাইব্রেরি বা কোনো ডিজাইন টুল থেকে এক্সপোর্ট করা ফাইলগুলোর ক্ষেত্রে সাধারণত একই ধরনের সমস্যা দেখা যায়।
একসাথে সর্বোচ্চ ৫০০টি ফাইল ড্রপ করুন, অথবা সরাসরি একটি ZIP আর্কাইভ ড্র্যাগ করে এনে ছেড়ে দিন এবং পুরো সেটের জন্য একবার ডাইমেনশন ও ফরম্যাট সেট করুন। সবকিছু আপনার নিজস্ব প্রসেসরে আপনার ব্রাউজারের ভেতরেই চলে, তাই অভ্যন্তরীণ স্ক্রিনশট, প্রোডাক্ট ডিজাইন এবং ক্লায়েন্ট ডকুমেন্টেশন কখনোই কোনো সার্ভারে পৌঁছায় না। কোনো কিছু আপলোড করা হয় না, তাই এখানে কোনো রিটেনশন পলিসি পড়ার প্রয়োজন নেই এবং পরে কোনো তথ্য অবশিষ্ট থাকে না।
ফাইলের পাশাপাশি সমস্যার মূল উৎসটিও ঠিক করুন। একটি স্ক্রিন ক্যাপচার টুল যদি ফুল রেটিনা রেজোলিউশনে PNG সেভ করার জন্য সেট করা থাকে, তবে সেটি ক্রমাগত 8 MB ফাইল তৈরি করতেই থাকবে। বেশিরভাগ ক্যাপচার টুলে একটি ডিফল্ট ফরম্যাট এবং স্কেল ফ্যাক্টর সেট করা যায়, এবং এই দুটি জিনিস একবার পরিবর্তন করলেই প্রতিবার স্ক্রিনশট প্রসেস করার ঝামেলা থেকে মুক্তি পাওয়া যায়।