lossless कंटेनर, PNG क्या रखता है
PNG DEFLATE lossless compression एल्गोरिदम इस्तेमाल करता है. यह हर पिक्सेल के RGBA मान हूबहू रखता है, हर scanline पर एक उलटा करने योग्य फ़िल्टर लगाता है, और नतीजे को zlib वैरिएंट से compress करता है. lossless का मतलब है decompress किए मान मूल मानों से बाइट-दर-बाइट एक जैसे होते हैं. JPG-to-PNG मामले में, मूल वे पिक्सेल हैं जो ब्राउज़र JPEG को डिकोड करते समय बनाता है. वे डिकोड किए पिक्सेल पहले से JPEG की मूल save में की गई सारी अनुमान-गणनाएँ दिखाते हैं, तो PNG उन अनुमानित पिक्सेल को ईमानदारी से रखता है, असली दृश्य को नहीं. माप में, 1024x768 पर एक की JPEG करीब की PNG में डिकोड होती है, और 3840x2160 पर एक की JPEG लगभग तक बढ़ती है. ये गुणक कंटेंट टाइप के पार करीब-करीब एक जैसे रहते हैं क्योंकि अनुपात रिज़ॉल्यूशन का पीछा करता है, JPEG क्वालिटी स्तर का नहीं. lossless फ़ॉर्मैट इसलिए कीमती है कि वह क्या रोकता है, आगे की गिरावट, न कि क्या लौटाता है.
JPEG क्वालिटी वापस क्यों नहीं आ सकती
JPEG compression जानकारी हमेशा के लिए हटा देता है. save की प्रक्रिया 8x8 पिक्सेल ब्लॉक पर एक discrete cosine transform लगाती है, बने frequency coefficients को एक छोटे सेट में quantize करती है, और उन quantized मानों को रखती है. quantization का कदम एकतरफ़ा है, क्योंकि जो coefficient 47 था और 50 में गोल हो गया, उसे बाद में 47 पर वापस नहीं लाया जा सकता, और मूल मान का कोई रिकॉर्ड फ़ाइल में नहीं बचता. जब ब्राउज़र JPEG को डिकोड करता है, वह quantized coefficients से पिक्सेल फिर बनाता है, जो मूल मानों के अनुमान होते हैं. उन अनुमानित पिक्सेल को PNG के रूप में फिर से save करने से अनुमानों का एक lossless रिकॉर्ड बनता है, तो PNG उस बिगड़ी इमेज का एक सटीक प्रतिनिधित्व है. यह PNG या इस टूल की सीमा नहीं है, यह lossy compression का एक मूल गुण है, जहाँ save के समय हटाई जानकारी चली जाती है. JPEG क्वालिटी सुधारने के लिए uncompressed या RAW मूल से शुरू करना ज़रूरी है.
मापी गई फ़ाइल साइज़ बढ़ोतरी
JPG से PNG तक साइज़ अनुपात इमेज के कंटेंट से बदलता है पर एक अनुमानित पैटर्न का पालन करता है. जटिल टोनल बदलाव वाली फ़ोटोग्राफ़िक इमेज सबसे ज़्यादा बढ़ती हैं, क्योंकि JPEG का transform ठीक उसी कंटेंट के लिए ढला है और ऊँचे compression अनुपात हासिल करता है, जबकि PNG का lossless compression शोरदार पिक्सेल डेटा पर उन अनुपातों से मेल नहीं खा सकता. इस टूल के टेस्ट माप दिखाते हैं कि 1024x768 पर एक की JPEG फ़ोटो एक की PNG बनाती है, करीब 6 गुना बढ़ोतरी, और 3840x2160 पर एक की JPEG फ़ोटो एक की PNG बनाती है, करीब 3.3 गुना. स्क्रीनशॉट और आइकन जैसी सपाट-रंग वाली इमेज के लिए JPEG कंटेंट के लिए पहले से ही ठीक नहीं है और बराबर क्वालिटी के लिए उसकी फ़ाइलें बड़ी होती हैं, तो उसी कंटेंट की PNG कम नाटकीय रूप से बढ़ती है. सीधा मतलब यह है, अगर आउटपुट फ़ाइल साइज़ आपके इस्तेमाल के लिए मायने रखता है, तो JPG को PNG में बदलना हालत बेहतर नहीं, बदतर करता है.
transparency, क्षमता बनाम कंटेंट
PNG एक पारदर्शिता को फ़ॉर्मैट सुविधा के रूप में सहारा देता है, जहाँ एक फ़ाइल हर पिक्सेल के opacity मान रख सकती है, 0 (पूरी तरह transparent) से 255 (पूरी तरह opaque) तक. जब एक JPG को प्लेटफ़ॉर्म इमेज इंजन से PNG में बदला जाता है, बनी PNG पूरी तरह opaque सेट होती है, हर पिक्सेल 255 के alpha मान पर, क्योंकि सोर्स JPG में शुरुआत में कोई transparency जानकारी थी ही नहीं. PNG फ़ॉर्मैट transparency डेटा रखने को तैयार है, फ़ाइल में बस कोई नहीं है, क्योंकि सोर्स में कोई मौजूद नहीं थी. इमेज में transparency जोड़ने के लिए अलग प्रोसेसिंग चाहिए, या तो किसी एडिटर में बैकग्राउंड को mask करना या एक अपने आप चलने वाला background-removal कदम. सब्जेक्ट को पहचानने के लिए सिखाया गया एक background-remover टूल बदलाव के बाद बैकग्राउंड पिक्सेल के alpha मान शून्य करके एक असली alpha वाली PNG बना सकता है.
EXIF मेटाडेटा संभालना
फिर से save की पाइपलाइन हर ब्राउज़र में PNG आउटपुट से EXIF, IPTC और XMP मेटाडेटा हटा देती है. इसका मतलब है कि सोर्स JPG में मौजूद GPS निर्देशांक, कैमरा मॉडल, खींचने की तारीख, copyright स्ट्रिंग, और कोई भी कस्टम XMP फ़ील्ड हटा दिए जाते हैं. ICC रंग प्रोफ़ाइल थोड़ा अलग रास्ता अपनाती हैं, जहाँ Chrome और Safari आउटपुट में sRGB ICC प्रोफ़ाइल टैग रखते हैं और Firefox उसे बाकी सारे मेटाडेटा के साथ हटा देता है. नतीजा यह कि आउटपुट ब्राउज़रों के पार sRGB-सुरक्षित है, पर Display-P3 या Adobe RGB जैसी चौड़े-gamut प्रोफ़ाइल Firefox में खो जाती हैं. ज़्यादातर वेब और शेयरिंग इस्तेमाल के लिए मेटाडेटा हटाना मददगार है, क्योंकि यह आउटपुट साइज़ थोड़ा घटाता है और फ़ोटो से लोकेशन डेटा हटाता है. पेशेवर फ़ोटोग्राफ़ी या अभिलेखीय वर्कफ़्लो के लिए जहाँ embedded मेटाडेटा बचाना ज़रूरी है, फ़ॉर्मैट बदलाव से पहले या बाद में मेटाडेटा चेन को किसी समर्पित टूल से संभालें.
व्यवहार में निजता
रूपांतरण कहाँ होता है यह फ़ाइलों की संख्या पर निर्भर करता है। एक छवि के लिए कोई डेटा सर्वर पर नहीं भेजा जाता, और यह वास्तविक समय में सत्यापन योग्य है। दो या अधिक फ़ाइलों के लिए RoundCut उन्हें हमारे सर्वर पर भेजता है, जो बदलकर परिणाम को पैक करके एक डाउनलोड लिंक लौटाता है। वह लिंक और बदली हुई फ़ाइलें करीब 2 घंटे में हटा दी जाती हैं। एक छवि का रास्ता पूरी तरह आपके डिवाइस पर, नेटवर्क के बाहर चलता है, जबकि बैच का रास्ता इसे एक बार में कई फ़ाइलें बदलने की सुविधा से बदल देता है। संवेदनशील सामग्री वाली छवियों के लिए, जैसे किसी निजी दस्तावेज़ का स्क्रीनशॉट या स्थान डेटा वाली तस्वीर, एक-एक कर बदलना सब कुछ स्थानीय रखता है।