JPEG, PNG, WebP या AVIF: कौन-सा रखें?
एक ही तस्वीर मेरे पास चार फ़ॉर्मैट में है। कौन-सी रखूँ और कौन-सी डिलीट करूँ?
शुरुआत तस्वीर से करें, फ़ॉर्मैट से नहीं
फ़ॉर्मैट की बहस लगभग हमेशा सबसे पहले करने के लिए ग़लत बहस होती है। नतीजा तय करती है इमेज की सामग्री। तस्वीरें चिकने, नॉइज़ भरे ग्रेडिएंट से बनी होती हैं जिनमें एक जैसे पिक्सेल की लंबी कतारें नहीं होतीं। स्क्रीनशॉट, लोगो, डायग्राम और पिक्सेल आर्ट सपाट हिस्सों, तीखे किनारों और गिनी-चुनी सटीक रंगों से बनते हैं। ये दोनों तरह की तस्वीरें बिल्कुल अलग तरीकों से कम्प्रेस होती हैं, और जो फ़ॉर्मैट एक में शानदार है वह दूसरे में आम तौर पर औसत ही रहता है।
तो पहला सवाल यह नहीं है कि “AVIF, JPEG से बेहतर है क्या”। पहला सवाल है “यह तस्वीर है या ग्राफ़िक, और क्या इसमें ट्रांसपेरेंसी चाहिए”। इसका जवाब मिलते ही शॉर्टलिस्ट आम तौर पर एक या दो फ़ॉर्मैट की रह जाती है।
हर फ़ॉर्मैट असल में करता क्या है
| फ़ॉर्मैट | कम्प्रेशन | ट्रांसपेरेंसी | एनिमेशन | सबसे उपयुक्त कहाँ |
|---|---|---|---|---|
| JPEG | सिर्फ़ लॉसी | नहीं | नहीं | ऐसी तस्वीरें जो हर जगह खुलनी चाहिए |
| PNG | सिर्फ़ लॉसलेस | हाँ, 8-बिट अल्फ़ा | नहीं (APNG एक अलग सुविधा है) | स्क्रीनशॉट, लोगो, सपाट ग्राफ़िक्स, हूबहू पिक्सेल |
| WebP | लॉसी या लॉसलेस | हाँ, दोनों मोड में | हाँ | JPEG और PNG दोनों की जगह लेने वाला आम विकल्प |
| AVIF | लॉसी या लॉसलेस | हाँ, 10-बिट समेत | हाँ | ऐसी तस्वीरें जहाँ एन्कोड में लगने वाला समय मंज़ूर हो |
टेबल एक बात छिपा जाती है जिसे खुलकर कहना चाहिए: PNG को क्वालिटी स्लाइडर घटाकर छोटा नहीं किया जा सकता, क्योंकि उसमें क्वालिटी स्लाइडर है ही नहीं। PNG ऑप्टिमाइज़र फ़ाइल को बेहतर प्रेडिक्शन फ़िल्टर और बेहतर पैलेट ढूँढकर घटाता है, डिटेल फेंककर नहीं। इसीलिए PNG में सेव की गई तस्वीर चाहे आप उस पर कोई भी टूल चला लें, विशाल ही रहती है — फ़ॉर्मैट में ऐसा कुछ है ही नहीं जो उसे जानकारी फेंकने दे।
लॉसी और लॉसलेस क्वालिटी के दर्जे नहीं हैं
“लॉसलेस” को “अच्छा” और “लॉसी” को “बुरा” पढ़ लेने का मन करता है। ये क्वालिटी के दर्जे नहीं, अलग-अलग काम हैं। लॉसलेस का मतलब है कि डीकोड किए गए पिक्सेल हूबहू वही हैं जो अंदर गए थे; यह तब सही चुनाव है जब पिक्सेल ही मक़सद हों, जैसे किसी UI स्क्रीनशॉट में जिससे कोई टेक्स्ट पढ़ेगा। लॉसी का मतलब है कि एन्कोडर को वह डिटेल फेंकने की इजाज़त है जिसे आँख अच्छे से नहीं पकड़ पाती, और सिर्फ़ इसी वजह से बारह मेगापिक्सेल की तस्वीर कुछ सौ किलोबाइट में समा पाती है।
एक काम का नियम: अगर एक भी ग़लत पिक्सेल आपको खटकेगा, तो लॉसलेस फ़ॉर्मैट लें। अगर नहीं खटकेगा, तो समझदारी वाली क्वालिटी सेटिंग पर लॉसी फ़ॉर्मैट कहीं छोटी फ़ाइल देगा और सामान्य देखने के साइज़ पर आपको फ़र्क दिखेगा ही नहीं।
WebP और AVIF अपनी जगह कैसे बनाते हैं
दोनों नए फ़ॉर्मैट ऐसे प्रेडिक्शन और ट्रांसफ़ॉर्म औज़ार इस्तेमाल करते हैं जो 1992 में मानकीकृत JPEG के पास नहीं हैं। व्यवहार में इसका मतलब है कि वे उतनी ही दिखने वाली क्वालिटी छोटे साइज़ में दे सकते हैं, और दोनों ट्रांसपेरेंसी संभालते हैं, जो JPEG कर ही नहीं सकता। WebP व्यावहारिक वाला है: यह तेज़ी से एन्कोड करता है और अकेला ही JPEG तथा PNG दोनों की जगह ले लेता है। AVIF महत्वाकांक्षी वाला है: यह AV1 वीडियो कोडेक के इंट्रा-फ़्रेम औज़ार इस्तेमाल करता है, ज़्यादा बिट डेप्थ संभालता है, और फ़ोटोग्राफ़िक सामग्री के लिए आम तौर पर चारों में सबसे छोटी फ़ाइल देता है।
कीमत है एन्कोड में लगने वाला समय। AVIF एन्कोडिंग एक खोज की समस्या है, और एन्कोडर उस पर सचमुच CPU समय खर्च करता है। ब्राउज़र टैब में, फ़ोन पर, वह समय आपका है — इसीलिए FileSlimmer AVIF के लिए हर फ़ाइल की प्रगति दिखाता है, यह दिखावा करने के बजाय कि इंतज़ार हो ही नहीं रहा। अगर आप एक हीरो इमेज कन्वर्ट कर रहे हैं तो यह सौदा साफ़ तौर पर फ़ायदे का है। अगर चार सौ कन्वर्ट कर रहे हैं तो WebP पर विचार कीजिए।
पुरानी फ़ाइल कन्वर्ट करने से पुराना नुकसान नहीं मिटता
यही सबसे आम निराशा है। अगर आप बरसों पहले कम क्वालिटी पर सेव किया गया JPEG लेकर उसे PNG या लॉसलेस WebP में कन्वर्ट करते हैं, तो ब्लॉकिंग और रिंगिंग आर्टिफ़ैक्ट ज्यों के त्यों नई फ़ाइल में उतर आते हैं। लॉसलेस का मतलब है “इनपुट जैसा हूबहू”, और इनपुट के पिक्सेल में नुकसान पहले ही पक चुका था। आपको वही खामियाँ लिए हुए एक बड़ी फ़ाइल मिलती है।
किसी लॉसी फ़ाइल को दूसरे लॉसी फ़ॉर्मैट में बदलना एक दूसरा, अलग कम्प्रेशन पास है, इसलिए वह ऊपर से अपने आर्टिफ़ैक्ट भी जोड़ सकता है। जब विकल्प हो, तो कम्प्रेसर से गुज़र चुकी कॉपी के बजाय अपने पास मौजूद सबसे मूल फ़ाइल से कन्वर्ट कीजिए — कैमरे का ओरिजिनल, डिज़ाइन टूल से किया गया एक्सपोर्ट।
एक शॉर्टलिस्ट जो सचमुच काम आती है
- तस्वीर, जिसे पुराने सॉफ़्टवेयर समेत हर जगह खुलना है: JPEG रखें।
- तस्वीर, अपनी साइट या ऐप के लिए, और पढ़ने वाला सॉफ़्टवेयर आपके नियंत्रण में है: WebP, या AVIF अगर एन्कोड का समय खर्च कर सकें।
- स्क्रीनशॉट, लोगो, डायग्राम, चार्ट, या कुछ भी जिसके पिक्सेल में टेक्स्ट हो: PNG, या लॉसलेस WebP अगर साइज़ सार्वभौमिक समर्थन से ज़्यादा मायने रखता है।
- कुछ भी जिसे पारदर्शी बैकग्राउंड चाहिए: PNG, WebP या AVIF। JPEG नहीं।
- आर्काइव कॉपी जिसे आप बाद में दोबारा एडिट कर सकते हैं: मूल फ़ाइल जैसी है वैसी रखें, और हर कम्प्रेस्ड वर्ज़न को फेंकने लायक मानें।
यह तुलना आपको क्या नहीं बताती
यहाँ साइज़ की कोई रैंकिंग नहीं है, और यह जानबूझकर है। प्रकाशित तुलनाएँ किसी खास इमेज सेट पर, खास एन्कोडर वर्ज़न और सेटिंग्स के साथ नापी जाती हैं, और इनमें से कुछ भी बदलते ही नतीजा हिल जाता है। आपकी अपनी तस्वीर के बारे में एकमात्र सही टेस्ट वह खुद है। एक ही सोर्स को अपनी पसंद की क्वालिटी सेटिंग पर हर उम्मीदवार में एक-एक बार कन्वर्ट कीजिए, फिर दोनों नंबर और दोनों इमेज साथ-साथ रखकर देखिए।
समर्थन भी समय के साथ बदलता है। किसी लाइब्रेरी को नए फ़ॉर्मैट के हवाले करने से पहले देखिए कि फ़ाइलें खोलनी किसे हैं: कोई ब्राउज़र, कोई फ़ोन गैलरी, कोई प्रिंटर, किसी ग्राहक का दस साल पुराना डेस्कटॉप एप्लिकेशन। सबसे अच्छा फ़ॉर्मैट वह सबसे छोटा फ़ॉर्मैट है जिसे उस सूची की हर चीज़ सचमुच पढ़ सके।
इसके लिए टूल
स्रोत
- ITU-T T.81 — the JPEG standard
- W3C — Portable Network Graphics (PNG) Specification (Third Edition)
- Google — WebP container and bitstream documentation
- Alliance for Open Media — AV1 Image File Format (AVIF)