मुख्य सामग्री पर जाएँ
Tooletto

JPEG बनाम PNG बनाम WebP: आपको असल में कौन सा इमेज फ़ॉर्मेट इस्तेमाल करना चाहिए

ये तीनों फ़ॉर्मेट अलग-अलग समस्याएँ हल करते हैं, और ग़लत फ़ॉर्मेट चुनने से या तो आपकी फ़ाइल का साइज़ बेवजह बढ़ जाता है या इमेज की क्वालिटी साफ़ दिखने लायक़ गिर जाती है। असल में सही चुनाव कैसे करें, यहाँ जानें।

· पढ़ने में 6 मिनट

वह एक फ़र्क़ जो असल में तय करता है कि आपको कौन सा फ़ॉर्मेट चाहिए

इमेज फ़ॉर्मेट को लेकर हर व्यावहारिक सवाल आख़िरकार एक ही मोड़ पर आकर टिकता है: क्या इस इमेज को लॉसलेस तरीक़े से कंप्रेस किया जाना ज़रूरी है, या यह उतनी जानकारी गँवा सकती है जो वैसे भी किसी को याद नहीं रहेगी? JPEG एक लॉसी फ़ॉर्मेट है — यह उस डिटेल को हटाकर कंप्रेस करता है जिसे इंसानी आँख सांख्यिकीय रूप से शायद ही नोटिस करे, जो फ़ोटोग्राफ़ पर बेहद अच्छा काम करता है लेकिन तीखे किनारों और सपाट रंग को साफ़ दिखने लायक़ बिगाड़ देता है। PNG लॉसलेस है — यह पिक्सल डेटा में मौजूद असली रिडंडेंसी को ढूँढकर और हटाकर कंप्रेस करता है, बिना कुछ भी गँवाए, जो तीखे किनारों और सपाट रंग को हूबहू दोहराता है लेकिन फ़ोटोग्राफ़िक डिटेल को उतना नहीं सिकोड़ पाता। WebP असामान्य है क्योंकि यह एक ही फ़ॉर्मेट में दोनों मोड सपोर्ट करता है, और यही इसके होने की मुख्य वजह भी है: यह JPEG और PNG के मुक़ाबले एक तीसरा विकल्प नहीं है, बल्कि एक नए कंप्रेशन एल्गोरिद्म की मदद से दोनों को उन्हीं की ख़ासियत में मात देने की कोशिश है।

इसे उलटा समझ लेना इमेज फ़ॉर्मेट से जुड़ी सबसे आम ग़लती है: किसी फ़ोटोग्राफ़ को PNG में सेव करने से फ़ाइल बेवजह बहुत बड़ी हो जाती है, बिना किसी विज़ुअल फ़ायदे के, क्योंकि लॉसलेस कंप्रेशन उस तरह की बारीक़, ग़ैर-दोहराव वाली डिटेल को मानी हुई सीमा तक नहीं सिकोड़ सकता जिससे कोई फ़ोटो भरी होती है। किसी स्क्रीनशॉट या लोगो को JPEG में सेव करने से फ़ाइल PNG से छोटी तो हो जाती है, लेकिन इसकी क़ीमत यह है कि हर तीखे किनारे के आसपास धुँधले आर्टिफ़ैक्ट दिखने लगते हैं और जो रंग सपाट, एक-समान होना चाहिए था वह थोड़ा गंदा नज़र आता है — यही वे दो कमियाँ हैं जिन्हें टालने में JPEG का कंप्रेशन सबसे कमज़ोर है।

असली फ़ोटोग्राफ़ के लिए JPEG अब भी सही विकल्प क्यों है

पिक्सल स्तर पर कोई फ़ोटोग्राफ़ ज़्यादातर लगातार बदलते ग्रेडिएंट और बारीक़, बेतरतीब डिटेल से बनी होती है — त्वचा के रंग जो मुलायमी से घुलमिल जाते हैं, पत्तों में हज़ारों हल्के-हल्के अलग हरे रंग, आसमान जिसमें क्षितिज से लेकर सिर के ठीक ऊपर तक रंग धीरे-धीरे बदलता है। JPEG का कंप्रेशन एल्गोरिद्म ख़ासतौर पर इसी तरह के कंटेंट का फ़ायदा उठाने के लिए बनाया गया है: यह फ़्रीक्वेंसी डोमेन में काम करता है, यानी किसी इमेज को मोटे तौर पर रंग के बड़े पैटर्न और बारीक़ डिटेल में अलग करता है, फिर उस बारीक़ डिटेल का कुछ हिस्सा हटा देता है जिसे देखने वाला शायद ही सचेत रूप से नोटिस करे, जबकि वे बड़े पैटर्न बचाए रखता है जो किसी फ़ोटोग्राफ़ की ज़्यादातर विज़ुअल जानकारी ढोते हैं। नतीजा एक ऐसा फ़ॉर्मेट है जो किसी असली फ़ोटो को उसके अनकंप्रेस्ड साइज़ के एक छोटे हिस्से तक सिकोड़ सकता है, फिर भी उचित क्वालिटी सेटिंग पर मूल से देखने में लगभग अलग न पहचाना जा सके — फ़ोटोग्राफ़ जैसे कंटेंट के लिए यह वाक़ई एक बढ़िया सौदा है।

यही कंप्रेशन तरीक़ा JPEG को हर उस चीज़ के लिए ख़राब विकल्प बना देता है जो फ़ोटोग्राफ़िक नहीं है। तीखे, ज़्यादा कंट्रास्ट वाले किनारे — किसी टेक्स्ट कैरेक्टर की सीमा, किसी लोगो की रूपरेखा, किसी UI स्क्रीनशॉट में कोई सख़्त लाइन — बिल्कुल वही हाई-फ़्रीक्वेंसी डिटेल है जिसे हटाने के लिए JPEG का कंप्रेशन बना है, और इसका दिखने वाला नतीजा उन किनारों के आसपास एक मुलायम, हल्का धुँधला हेलो होता है जिन्हें तीखा दिखना चाहिए था। इसे ही ज़्यादातर लोग "JPEG आर्टिफ़ैक्टिंग" के नाम से पहचान लेते हैं, भले ही उन्हें इसकी तकनीकी वजह न पता हो — यह फ़ॉर्मेट की कोई ख़ामी नहीं है, यह फ़ॉर्मेट ठीक वही कर रहा है जिसके लिए इसे डिज़ाइन किया गया था, बस उस कंटेंट पर जिसके लिए यह कभी बनाया ही नहीं गया।

सही कंटेंट के लिए PNG अपना कहीं बड़ा फ़ाइल साइज़ किस तरह जायज़ ठहराता है

PNG एक जनरल-पर्पज़ एल्गोरिद्म का इस्तेमाल करके लॉसलेस तरीक़े से कंप्रेस करता है, जो पिक्सल डेटा में असली, शाब्दिक रिडंडेंसी ढूँढकर हटाता है — एक ही रंग के दोहराए गए हिस्से, अनुमान लगाए जा सकने वाले पैटर्न — बिना कभी वह जानकारी हटाए जो JPEG हटाता है। सपाट UI रंग और तीखे टेक्स्ट से भरा कोई स्क्रीनशॉट, मुट्ठी भर ठोस रंगों वाला कोई लोगो, या साफ़-सुथरी लाइनों और फ़िल से बना कोई डायग्राम बिल्कुल वही कंटेंट है जिसे रिडंडेंसी-आधारित कंप्रेशन अच्छी तरह संभालता है, क्योंकि इसमें ढूँढने के लिए वाक़ई काफ़ी शाब्दिक दोहराव होता है: एक ठोस सफ़ेद बैकग्राउंड वही वैल्यू लाखों बार दोहराई गई होती है, जो बेहद असरदार तरीक़े से कंप्रेस होती है, मूल का एक भी बिट खोए बिना।

PNG वह फ़ॉर्मेट भी है जिसकी तरफ़ रुख़ करना चाहिए जब भी असली पारदर्शिता ज़रूरी हो — कोई लोगो जिसे किसी रंगीन बैकग्राउंड के ऊपर बैठना है, कोई आइकॉन जिसे अलग-अलग UI थीम में घुलमिल जाना है — क्योंकि PNG में एक असली अल्फ़ा चैनल होता है जो पिक्सल-दर-पिक्सल पारदर्शिता सपोर्ट करता है, जिसके लिए JPEG के पास कोई तंत्र ही नहीं है। इसकी क़ीमत यह है कि किसी असली फ़ोटोग्राफ़ पर PNG लगाने से फ़ाइल JPEG के मुक़ाबले नाटकीय रूप से बड़ी हो जाती है, वह भी बेहद कम विज़ुअल फ़ायदे के लिए, क्योंकि किसी फ़ोटोग्राफ़ में वैसी शोषण-योग्य रिडंडेंसी होती ही नहीं जिसे PNG का एल्गोरिद्म ढूँढता है — हर पिक्सल अपने पड़ोसी से थोड़ा अलग होता है, तो बिना जानकारी गँवाए हटाने के लिए तुलनात्मक रूप से बहुत कम बचता है, और जानकारी गँवाना बिल्कुल वही चीज़ है जिसे करने से PNG का डिज़ाइन इनकार करता है।

WebP असल में क्या जोड़ता है, और ब्राउज़र सपोर्ट अब पहले जैसी रुकावट क्यों नहीं रहा

WebP को ख़ासतौर पर JPEG और PNG दोनों को उन्हीं की ख़ासियत में पीछे छोड़ने के लिए बनाया गया था, उन कंप्रेशन तकनीकों का इस्तेमाल करके जो इन दोनों पुराने फ़ॉर्मेट के डिज़ाइन होने के बाद विकसित हुईं। अपने लॉसी मोड में, WebP आमतौर पर उसी फ़ोटोग्राफ़ पर तुलनीय विज़ुअल क्वालिटी वाले JPEG से 25 से 35 प्रतिशत तक छोटी फ़ाइल बनाता है, क्योंकि इसका अंतर्निहित एल्गोरिद्म — जो वीडियो-कोडेक कंप्रेशन रिसर्च से निकला है — इमेज के पड़ोसी ब्लॉक के बीच की रिडंडेंसी को JPEG के पुराने तरीक़े से कहीं बेहतर ढंग से मॉडल करता है। अपने लॉसलेस मोड में, WebP उसी स्क्रीनशॉट या लोगो पर आमतौर पर PNG को तुलनीय मार्जिन से पीछे छोड़ देता है, उसी बुनियादी वजह से: नई, ज़्यादा उन्नत रिडंडेंसी-डिटेक्शन वह बचत ढूँढ लेती है जो कोई पुराना एल्गोरिद्म नहीं ढूँढ पाता था।

सालों तक WebP के ख़िलाफ़ व्यावहारिक आपत्ति ब्राउज़र और सॉफ़्टवेयर कम्पैटिबिलिटी थी — पुराने ब्राउज़र, कुछ इमेज एडिटर, और कई कंटेंट-मैनेजमेंट सिस्टम इसे बस खोल ही नहीं पाते थे — लेकिन यह फ़ासला अब काफ़ी हद तक पट चुका है: हर बड़ा आधुनिक ब्राउज़र अब कई सालों से WebP सपोर्ट करता आ रहा है, और बचे-खुचे कम्पैटिबिलिटी गैप अब मुख्यधारा की चिंता की बजाय ज़्यादातर दुर्लभ अपवाद ही रह गए हैं। JPEG या PNG की तरफ़ लौटने की जो ईमानदार वजह अब भी बचती है, वह तब है जब कोई ख़ास डाउनस्ट्रीम टूल या वर्कफ़्लो — कोई पुराना डेस्कटॉप सॉफ़्टवेयर, कोई प्रिंट पाइपलाइन, किसी क्लाइंट का मौजूदा कंटेंट सिस्टम — वाक़ई अभी तक WebP नहीं संभाल पाता, जो एक असली और अब भी आम पाबंदी है, बस पहले से कहीं ज़्यादा संकरी।

एक व्यावहारिक फ़ैसला गाइड

वेब के लिए बनी किसी असली फ़ोटोग्राफ़ के लिए — प्रोडक्ट फ़ोटो, ब्लॉग हेडर इमेज, फ़ोटो गैलरी — जहाँ भी डेस्टिनेशन सपोर्ट करे वहाँ लॉसी मोड में WebP सबसे अच्छा डिफ़ॉल्ट है, और जहाँ नहीं करे वहाँ JPEG फ़ॉलबैक के तौर पर; असली फ़ोटोग्राफ़िक कंटेंट के लिए PNG लगभग कभी सही चुनाव नहीं होता, क्योंकि इसकी फ़ाइल साइज़ की क़ीमत किसी अच्छी तरह ट्यून की गई लॉसी फ़ॉर्मेट से कोई सार्थक क्वालिटी सुधार नहीं दिलाती। किसी स्क्रीनशॉट, लोगो, आइकॉन, या सपाट रंग, तीखे टेक्स्ट या ज़रूरी पारदर्शिता वाली किसी भी चीज़ के लिए, PNG या लॉसलेस WebP सही चुनाव है, क्योंकि JPEG ठीक उन्हीं तीखे किनारों के आसपास दिखने वाला आर्टिफ़ैक्ट डाल देगा जिनसे ऐसा कंटेंट भरा होता है। किसी ऐसे संदर्भ के लिए जहाँ सख़्त कम्पैटिबिलिटी ज़रूरत हो — कोई ईमेल क्लाइंट, कोई पुराना कंटेंट सिस्टम, कोई ख़ास प्रिंट वर्कफ़्लो — दोनों में से पुराने, सार्वभौमिक रूप से सपोर्टेड फ़ॉर्मेट पर टिके रहना (फ़ोटो के लिए JPEG, ग्राफ़िक्स के लिए PNG) एक सुरक्षित, बेशक़ कम चमकदार, चुनाव बना रहता है।

JPEG और बार-बार एडिटिंग पर एक नोट

चूँकि JPEG हर बार कंप्रेस करते समय कुछ जानकारी हटाता है, इसलिए एक ही JPEG फ़ाइल को बार-बार दोबारा सेव करना — उसे खोलना, कोई छोटा बदलाव करना, फिर से JPEG के रूप में सेव करना, और फ़ाइल की पूरी ज़िंदगी में यह बार-बार दोहराना — असली, जमा होने वाला क्वालिटी नुक़सान करता है जिसे जेनरेशन लॉस कहते हैं, क्योंकि हर सेव उस इमेज पर दोबारा लॉसी कंप्रेशन लगाता है जो पहले ही अपनी कुछ मूल डिटेल गँवा चुकी होती है। यह एक या दो बार सेव करने के बाद अदृश्य रहता है लेकिन कई बार के बाद वाक़ई दिखने लगता है, इसीलिए किसी ऐसी इमेज की अनकंप्रेस्ड या लॉसलेस-कंप्रेस्ड मास्टर कॉपी रखना जिसे आप बार-बार एडिट करने की उम्मीद रखते हैं, और सिर्फ़ आख़िरी क़दम के तौर पर JPEG में एक्सपोर्ट करना, क्वालिटी गिरावट के एक असली और आसानी से नज़रअंदाज़ हो जाने वाले स्रोत से बचाता है।

संबंधित टूल

ब्लॉग में और लेख