लेख
हर बार सेव करने पर इमेज क्वालिटी क्यों खोती हैं
कैमरा रोल पर शार्प दिखने वाली फ़ोटो कुछ ग्रुप चैट से फ़ॉरवर्ड होने और दो बार रीपोस्ट होने के बाद ब्लॉकी दिखने लगती है। किसी ने जानबूझकर इसे एडिट नहीं किया; यह बस कई बार दोबारा-एनकोड हुई, और हर बार थोड़ी और डिटेल फेंकी गई। यह जनरेशन लॉस है, लॉसी कंप्रेशन की एक पुरानी और अच्छी तरह समझी गई खासियत, और यह बताता है कि भारी शेयर की गई इमेज धीरे-धीरे और खराब क्यों दिखने लगती हैं। यहां है कि लॉसी री-एनकोड असल में क्या फेंकता है, यह क्यों जुड़ता चला जाता है, और फ़ाइल को और बिगड़ने से कैसे रोकें।
'लॉसी' असल में क्या फेंक देता है
JPEG, जो ऑनलाइन शेयर होने वाली ज़्यादातर फ़ोटो के पीछे है, डिज़ाइन से लॉसी है: इसके पीछे का स्टैंडर्ड, ITU-T T.81, पिक्सल के ब्लॉक को फ़्रीक्वेंसी डेटा में बदलकर काम करता है और फिर क्वालिटी सेटिंग के हिसाब से उस डेटा को कम या ज़्यादा आक्रामक तरीके से राउंड करता है, एक स्टेप जिसे quantization कहते हैं। राउंडिंग को ठीक-ठीक वापस नहीं किया जा सकता; फेंकी गई डिटेल असल में चली जाती है, फ़ाइल में कहीं छिपी नहीं रहती। ऊंची क्वालिटी सेटिंग हल्के से राउंड करती है और नुकसान देखना मुश्किल होता है, कम क्वालिटी सेटिंग ज़्यादा राउंड करती है और फ़ाइल साफ़ ब्लॉकी दिखने लगती है, लेकिन एक अकेली JPEG सेव भी हमेशा कुछ न कुछ फेंकती है।
हर री-एनकोड एक नई जनरेशन है
जब कोई फ़ोटो पहली बार JPEG के रूप में सेव होती है, कैमरे का पिक्सल डेटा एक बार क्वांटाइज़ होता है। उसी JPEG को बिना कोई एडिट किए दोबारा खोलकर दोबारा सेव करना, पहले से अनुमानित पिक्सल को डिकोड करके उन्हें पहली राउंडिंग के ऊपर, उसकी जगह नहीं, दूसरी बार क्वांटाइज़ करता है। हर अतिरिक्त सेव एक और जनरेशन है, और हर एक पिछली जनरेशन के लाए ब्लॉकीनेस और कलर बैंडिंग को और बढ़ा देता है। एक ठीक-ठाक क्वालिटी सेटिंग पर एक अकेला पास लगभग अदृश्य होता है; उसी फ़ाइल पर लगातार पांच-छह बार वही सेटिंग लगाना फ़ोटो को साफ़ बिगाड़ देता है, क्योंकि हर पहले की जनरेशन की गलतियां तब भी मौजूद होती हैं जब अगली दोबारा राउंड करती है।

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

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