HEIC क्या है, और आपको HEIC रखना चाहिए या JPEG?
मेरा फ़ोन .heic फ़ाइलें सेव करता है और लैपटॉप पर कुछ भी उन्हें नहीं खोलता। ये हैं क्या, और क्या मुझे इनकी ज़रूरत है?
HEIC का मतलब क्या है
HEIC का आम मतलब है High Efficiency Image Container। .heic एक्सटेंशन HEIF परिवार की इमेज फ़ाइल बताता है, जिसमें आम तौर पर पिक्सेल HEVC से एन्कोड किए होते हैं। रोज़मर्रा में लोग HEIC कहते हैं जब उनका मतलब iPhone की फ़ोटो फ़ाइल से होता है, जबकि कंटेनर का मानक HEIF है और उसके अंदर का कम्प्रेशन कोडेक आम तौर पर HEVC।
यही फ़र्क समझाता है कि .heic को .jpg कर देने से फ़ोटो कन्वर्ट क्यों नहीं होती। फ़ाइल एक्सटेंशन सिर्फ़ एक लेबल है; सॉफ़्टवेयर को अंदर तब भी HEIF का ढाँचा और HEVC से कम्प्रेस किया गया इमेज डेटा ही मिलता है। असली कन्वर्ज़न के लिए उन पिक्सेल को डीकोड करके नई JPEG, PNG या WebP फ़ाइल एन्कोड करनी पड़ती है।
HEIC एक कंटेनर है, कोडेक नहीं
.heic फ़ाइल दरअसल HEIF फ़ाइल है: High Efficiency Image File Format, जो ISO/IEC 23008-12 के रूप में मानकीकृत है। HEIF उसी ISO बेस मीडिया फ़ाइल ढाँचे पर बना कंटेनर है जिस पर MP4 बना है। यह बताता है कि फ़ाइल के भीतर इमेज, थंबनेल, डेप्थ मैप, इमेज सीक्वेंस और मेटाडेटा किस तरह सजाए जाते हैं — यह नहीं बताता कि पिक्सेल किस तरह कोड किए जाएँगे।
iPhone जो फ़ाइलें बनाता है, उनमें पिक्सेल HEVC से कोड किए जाते हैं, जिसे H.265 भी कहते हैं — वही वीडियो कोडेक जो ITU-T H.265 के रूप में मानकीकृत है। फ़ॉर्मैट के फ़ायदे और उसकी दिक्कतें, दोनों की जड़ यही है: आप असल में एक तस्वीर को किसी आधुनिक वीडियो कोडेक के इकलौते फ़्रेम के रूप में सहेज रहे होते हैं।
फ़ोन ने इसे क्यों चुना
HEVC के पास ऐसे इंट्रा-फ़्रेम प्रेडिक्शन औज़ार हैं जो JPEG के 1992 वाले डिज़ाइन के पास नहीं हैं, इसलिए उतनी ही दिखने वाली क्वालिटी के लिए उसे आम तौर पर कम बिट चाहिए। फ़ोन में स्टोरेज सीमित है और फ़ोटो लाइब्रेरी नहीं, इसलिए यह बचत डिवाइस बनाने वाले के लिए सचमुच पैसे की बचत है। कंटेनर एक ही फ़ाइल में कई जुड़ी हुई इमेज भी रखने देता है — बर्स्ट के फ़्रेम, किसी Live Photo की स्टिल तस्वीर और छोटी क्लिप, कोई अल्फ़ा या डेप्थ चैनल — बजाय इसके कि वे एक फ़ोल्डर में बिखरी रहें।
एक दूसरा फ़ायदा भी है जो कुछ लोगों के लिए साइज़ से ज़्यादा मायने रखता है: HEIF हर चैनल पर 8 से ज़्यादा बिट सँभालता है। 10-बिट इमेज में ग्रेडिएंट के लिए कहीं ज़्यादा गुंजाइश होती है, इसीलिए एडिटिंग के बाद आसमान और त्वचा के रंग 8-बिट JPEG के मुकाबले बेहतर बचे रहते हैं।
आपका बाकी सॉफ़्टवेयर इसे खोलने से क्यों मना करता है
HEVC एक पेटेंट वाला कोडेक है जिसके डीकोडर पर लाइसेंसिंग की देनदारियाँ हैं। यह कानूनी और व्यावसायिक तथ्य है, तकनीकी नहीं, और समर्थन के असमान होने की मुख्य वजह यही है: कुछ ऑपरेटिंग सिस्टम डीकोडर के साथ आते हैं, कुछ सिर्फ़ तब जब हार्डवेयर डीकोडर मौजूद हो, और कुछ ब्राउज़र HEIC डीकोड करते हैं जबकि दूसरे नहीं। जो फ़ाइल उसी फ़ोन पर तुरंत खुल जाती है जिससे वह ली गई थी, वह तीन मीटर दूर रखी मशीन पर अपठनीय हो सकती है।
इसीलिए FileSlimmer HEIC डीकोड तो करता है, पर उसे लिखता कभी नहीं। कन्वर्ज़न आपके ब्राउज़र में चलता है — जहाँ प्लेटफ़ॉर्म का डीकोडर मौजूद हो वहाँ उसका इस्तेमाल करके और जहाँ न हो वहाँ खुद होस्ट किए गए WebAssembly डीकोडर से — और आउटपुट JPEG, PNG या WebP होता है, यानी वे फ़ॉर्मैट जिन्हें पाने वाला सॉफ़्टवेयर सचमुच खोल लेगा।
HEIC बनाम JPEG, ईमानदारी से
| पहलू | HEIC, यानी HEVC वाला HEIF | JPEG |
|---|---|---|
| एक जैसी क्वालिटी पर साइज़ | आम तौर पर छोटा | आम तौर पर बड़ा |
| बिट डेप्थ | 8 या 10 बिट प्रति चैनल | 8 बिट प्रति चैनल |
| ट्रांसपेरेंसी | समर्थित | असमर्थित |
| एक फ़ाइल में कई इमेज | समर्थित | असमर्थित |
| अनजान सॉफ़्टवेयर में खुलना | अक्सर नहीं | लगभग हमेशा |
| लाइसेंसिंग | पेटेंट वाला कोडेक | व्यावहारिक रूप से बंधनमुक्त |
एक HEIC फ़ाइल क्या-क्या छिपाए हो सकती है
चूँकि कंटेनर एक संग्रह रख सकता है, इसलिए अकेली .heic फ़ाइल में उस तस्वीर से ज़्यादा हो सकता है जो आपको दिख रही है। कोई Live Photo स्टिल के साथ एक छोटा इमेज सीक्वेंस भी ढोता है। पोर्ट्रेट शॉट में डेप्थ मैप हो सकता है। बर्स्ट में कई फ़्रेम हो सकते हैं जिनमें से एक प्राइमरी के तौर पर चिह्नित होता है। JPEG में कन्वर्ट करने पर एक सपाट इमेज बनती है, इसलिए कंटेनर प्राइमरी इमेज के साथ जो कुछ भी ढो रहा था वह आउटपुट में मौजूद नहीं होता।
ओरिएंटेशन का अलग से ज़िक्र बनता है। HEIC घुमाव को मेटाडेटा के रूप में दर्ज करता है, ठीक वैसे ही जैसे JPEG करता है। जो कन्वर्टर उसे अनदेखा कर देता है वह टेढ़ी पड़ी तस्वीरें बनाता है। FileSlimmer कन्वर्ज़न के दौरान दर्ज किया गया ओरिएंटेशन पिक्सेल पर लागू कर देता है, ताकि JPEG वैसा ही दिखे जैसा फ़ोन दिखाता था।
तो कौन-सी कॉपी रखें?
- HEIC को अपना ओरिजिनल रखिए अगर आप ऐसे इकोसिस्टम के भीतर रहते हैं जो उसे पढ़ लेता है और आपको छोटी लाइब्रेरी तथा ज़्यादा बिट डेप्थ की कीमत पता है।
- बाहर भेजी जाने वाली हर चीज़ के लिए JPEG में कन्वर्ट कीजिए: अपलोड फ़ॉर्म, प्रिंट सेवा, ईमेल अटैचमेंट, अनजान सॉफ़्टवेयर वाला कोई सहकर्मी।
- PNG में तभी कन्वर्ट कीजिए जब एडिटिंग के लिए लॉसलेस आउटपुट चाहिए; फ़ाइल बाकी दोनों से काफ़ी बड़ी होगी।
- HEIC को JPEG में कन्वर्ट करके HEIC मत हटाइए, अगर वह 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