HEIC কী, আর আপনার HEIC রাখা উচিত না JPEG?
আমার ফোন .heic ফাইল সেভ করে, কিন্তু ল্যাপটপের কোনো কিছুতেই সেগুলো খোলে না। এগুলো কী, আর আমার কি এগুলো দরকার?
HEIC-এর পুরো কথাটা কী
HEIC বলতে সাধারণত বোঝায় High Efficiency Image Container। .heic এক্সটেনশন চিনিয়ে দেয় HEIF-পরিবারের একটা ইমেজ ফাইল, যার ভেতরের পিক্সেল সাধারণত HEVC দিয়ে এনকোড করা। দৈনন্দিন কথাবার্তায় মানুষ HEIC বলতে আইফোনের ছবির ফাইলটাই বোঝায়, যদিও কন্টেইনার স্ট্যান্ডার্ডের নাম HEIF আর তার ভেতরের কম্প্রেশন কোডেক সাধারণত HEVC।
এই পার্থক্যটাই বুঝিয়ে দেয় .heic বদলে .jpg করে দিলে কেন ছবিটা কনভার্ট হয় না। ফাইল এক্সটেনশন কেবল একটা লেবেল; সফটওয়্যার ভেতরে তখনও HEIF কাঠামো আর HEVC-তে কম্প্রেস করা ইমেজ ডেটাই খুঁজে পায়। সত্যিকারের কনভার্শনে ওই পিক্সেলগুলো ডিকোড করে নতুন একটা JPEG, PNG বা WebP ফাইল এনকোড করতেই হবে।
HEIC একটা কন্টেইনার, কোডেক নয়
একটা .heic ফাইল আসলে HEIF ফাইল: High Efficiency Image File Format, যা ISO/IEC 23008-12 হিসেবে মান নির্ধারিত। HEIF একটা কন্টেইনার, MP4 যে ISO base media file কাঠামো ব্যবহার করে তারই উপরে গড়া। এটা বলে দেয় ইমেজ, থাম্বনেইল, ডেপথ ম্যাপ, ইমেজ সিকোয়েন্স আর মেটাডেটা ফাইলের ভেতরে কীভাবে সাজানো থাকবে — পিক্সেল কীভাবে কোড করা হবে, সেটা বলে না।
আইফোন যেসব ফাইল বানায় তাতে পিক্সেল কোড করা হয় HEVC দিয়ে, যাকে H.265-ও বলা হয় — ITU-T H.265 হিসেবে মান নির্ধারিত ভিডিও কোডেক। ফরম্যাটটির সুবিধা আর সমস্যা, দুটোরই উৎস এটাই: আপনি কার্যত একটা ছবিকে আধুনিক ভিডিও কোডেকের একটামাত্র ফ্রেম হিসেবে জমা রাখছেন।
ফোন কেন এটাই বেছে নিল
HEVC-তে এমন ইন্ট্রা-ফ্রেম প্রেডিকশন টুল আছে যা JPEG-এর 1992 সালের নকশায় নেই, তাই একই দৃশ্যমান কোয়ালিটির জন্য এর সাধারণত কম বিট লাগে। ফোনের স্টোরেজ সীমিত, ছবির লাইব্রেরি নয়, তাই এই সাশ্রয়ের দাম ডিভাইস নির্মাতার কাছে সত্যিকারের টাকার সমান। কন্টেইনারটি একটামাত্র ফাইলে কয়েকটি সম্পর্কিত ইমেজও রাখতে দেয় — বার্স্টের ফ্রেমগুলো, Live Photo-র স্থিরচিত্র আর ছোট ক্লিপ, আলফা বা ডেপথ চ্যানেল — এগুলো ফোল্ডারজুড়ে ছড়িয়ে না রেখে।
দ্বিতীয় একটা সুবিধা আছে, যা কারও কারও কাছে সাইজের চেয়েও জরুরি: HEIF প্রতি চ্যানেলে 8 বিটের বেশি সমর্থন করে। 10-বিট ইমেজে গ্রেডিয়েন্টের জন্য অনেক বেশি জায়গা থাকে, এ কারণেই 8-বিট JPEG-এর তুলনায় আকাশ আর ত্বকের রং এডিটিং অনেক ভালোভাবে সামলায়।
আপনার অন্য সফটওয়্যার কেন এটা খুলতে চায় না
HEVC একটা পেটেন্ট করা কোডেক, ডিকোডারের জন্য যার লাইসেন্সিং বাধ্যবাধকতা আছে। এটা আইনি ও বাণিজ্যিক বাস্তবতা, কারিগরি নয়, আর সমর্থন অসমান হওয়ার মূল কারণও এটাই: কোনো কোনো অপারেটিং সিস্টেম ডিকোডার দেয়, কেউ কেউ দেয় শুধু হার্ডওয়্যার ডিকোডার থাকলে, আর কিছু ব্রাউজার HEIC ডিকোড করে, কিছু করে না। যে ফোনে ছবিটা তোলা হয়েছে সেখানে সঙ্গে সঙ্গে খুলে যাওয়া ফাইলটাই তিন মিটার দূরের মেশিনে পড়াই না-ও যেতে পারে।
এ কারণেই FileSlimmer HEIC ডিকোড করে, কিন্তু কখনও HEIC লেখে না। কনভার্শন চলে আপনার ব্রাউজারেই — প্ল্যাটফর্মের ডিকোডার থাকলে সেটা দিয়ে, না থাকলে নিজেদের হোস্ট করা একটা WebAssembly ডিকোডার দিয়ে — আর আউটপুট হয় JPEG, PNG বা WebP, অর্থাৎ যেসব ফরম্যাট গ্রহণকারী সফটওয়্যার সত্যিই খুলতে পারবে।
HEIC বনাম JPEG, সৎভাবে
| বৈশিষ্ট্য | HEIC, অর্থাৎ HEVC সহ HEIF | JPEG |
|---|---|---|
| কাছাকাছি কোয়ালিটিতে সাইজ | সাধারণত ছোট | সাধারণত বড় |
| বিট ডেপথ | প্রতি চ্যানেলে 8 বা 10 বিট | প্রতি চ্যানেলে 8 বিট |
| স্বচ্ছতা | সমর্থিত | সমর্থিত নয় |
| একটা ফাইলে একাধিক ইমেজ | সমর্থিত | সমর্থিত নয় |
| অচেনা সফটওয়্যারে খোলে | প্রায়ই খোলে না | প্রায় সব সময়ই খোলে |
| লাইসেন্সিং | পেটেন্ট করা কোডেক | কার্যত বাধামুক্ত |
একটা HEIC ফাইল কী লুকিয়ে রাখতে পারে
কন্টেইনারটি যেহেতু একটা সংগ্রহ ধরে রাখতে পারে, একটামাত্র .heic ফাইলে আপনার দেখা ছবিটার চেয়ে বেশি কিছু থাকতে পারে। Live Photo স্থিরচিত্রের পাশাপাশি একটা ছোট ইমেজ সিকোয়েন্সও বহন করে। পোর্ট্রেট মোডে তোলা ছবিতে ডেপথ ম্যাপ থাকতে পারে। বার্স্টে অনেকগুলো ফ্রেম থাকতে পারে, যার একটিকে প্রধান হিসেবে চিহ্নিত করা। JPEG-তে কনভার্ট করলে একটামাত্র সমতল ইমেজ তৈরি হয়, তাই প্রধান ইমেজের পাশাপাশি কন্টেইনার যা কিছু বহন করছিল তা আউটপুটে থাকে না।
ওরিয়েন্টেশনের কথা আলাদা করে বলা দরকার। JPEG যেমন করে, HEIC-ও ঠিক তেমনই ঘূর্ণনকে মেটাডেটা হিসেবে লিখে রাখে। যে কনভার্টার সেটা উপেক্ষা করে, সে কাত হয়ে যাওয়া ছবি বানায়। FileSlimmer কনভার্শনের সময় লিখে রাখা ওরিয়েন্টেশনটা পিক্সেলে প্রয়োগ করে, তাই ফোনে যেভাবে দেখাচ্ছিল JPEG-টাও ঠিক সেভাবেই দেখায়।
তাহলে কোন কপিটা রাখবেন?
- যে ইকোসিস্টেম HEIC পড়তে পারে তার ভেতরেই যদি থাকেন, আর ছোট লাইব্রেরি ও বাড়তি বিট ডেপথ যদি আপনার কাছে মূল্যবান হয়, তাহলে HEIC-টাই মূল কপি হিসেবে রাখুন।
- বাইরে পাঠানোর সবকিছুর জন্য JPEG-তে কনভার্ট করুন: আপলোড ফর্ম, প্রিন্ট সার্ভিস, ইমেলের সংযুক্তি, অজানা সফটওয়্যার ব্যবহার করা কোনো সহকর্মী।
- PNG-তে কনভার্ট করুন কেবল তখনই, যখন এডিটিংয়ের জন্য লসলেস আউটপুট দরকার; ফাইলটা বাকি দুটোর যেকোনোটার চেয়ে অনেক বড় হবে।
- HEIC-টাই যদি আপনার একমাত্র মূল কপি হয়, তাহলে JPEG-তে কনভার্ট করে HEIC-টা মুছে ফেলবেন না। কনভার্শনটা আগে থেকেই লসি একটা ইমেজের আরেক দফা লসি রি-এনকোড।
কনভার্ট করার আগে জেনে রাখার মতো সীমাবদ্ধতা
কনভার্ট করা দ্বিতীয় দফা লসি পাস, তাই উঁচু সেটিংয়েও সামান্য কোয়ালিটি হারায়। কোনো ব্রাউজার যদি HEVC আদৌ ডিকোড করতে না পারে, আর নিজেদের হোস্ট করা বিকল্প ডিকোডারও যদি কোনো নির্দিষ্ট ধরন সামলাতে না পারে — অস্বাভাবিক কোনো প্রোফাইল, নষ্ট হয়ে যাওয়া ফাইল, একই কন্টেইনারের ভেতরে HEVC ছাড়া অন্য কোনো কোডেক — তখন ভুল কিছু বানানোর বদলে কনভার্শনটাই ব্যর্থ হয়। FileSlimmer জানিয়ে দেয় কোন ফাইলে ব্যর্থ হয়েছে আর কেন, এবং মূল ফাইলটায় হাত দেয় না।
উৎসেই যদি এই ঝামেলা শেষ করতে চান, বেশিরভাগ ফোন ক্যামেরায় একটা কম্প্যাটিবিলিটি সেটিং আছে যা ছবি তোলা আবার JPEG-এ ফিরিয়ে নেয়। স্টোরেজের বিনিময়ে আপনি পান যে কাউকে ফাইলটা ধরিয়ে দেওয়ার সুবিধা।
এই কাজের টুল
সূত্র
- ISO/IEC 23008-12 — High Efficiency Image File Format
- ITU-T H.265 — High Efficiency Video Coding
- Nokia Technologies — HEIF technical overview