PNG कंप्रेसर
कुछ अपलोड नहीं होता; हर फ़ाइल इसी ब्राउज़र में प्रोसेस होती है
PNG हर पिक्सेल ठीक-ठीक रखती है, इसलिए घटाने को कोई क्वालिटी नहीं और फेंकने को कोई बारीकी नहीं। PNG सिर्फ़ तीन तरीक़ों से छोटी होती है: कम पिक्सेल, कम रंग, या ऐसा फ़ॉर्मैट जिसे कुछ फेंकने की छूट हो। यह पेज पहला और तीसरा करता है।
PNG कैसे कंप्रेस करें
PNG में कुछ नहीं फेंका जाता, और वह कैसे कंप्रेस करती है यह जानने से समझ आता है कि कुछ फ़ाइलें क्यों मुश्किल से हिलती हैं। पिक्सेल की हर पंक्ति पहले पाँच में से एक फ़िल्टर से गुज़रती है (None, Sub, Up, Average, Paeth), जो हर बाइट को बाएँ या ऊपर वाले पड़ोसी से अंतर के रूप में दोबारा लिखता है, और फिर फ़िल्टर हुई पंक्तियाँ उसी DEFLATE से गुज़रती हैं जो ZIP इस्तेमाल करता है। इससे फ़ाइल का आकार इस पर निर्भर करता है कि तस्वीर में कितना दोहराव है, इस पर नहीं कि वह कैसी दिखती है। सपाट रंगों वाले इंटरफ़ेस का स्क्रीनशॉट बहुत कंप्रेस होता है क्योंकि पूरी पंक्तियाँ शून्यों की लड़ी बन जाती हैं। फ़ोटो पिक्सेल के स्तर पर शोर से भरी होती है, इसलिए लगभग कुछ भी कुछ और का अंदाज़ा नहीं देता और फ़ाइल कच्चे आकार के क़रीब रहती है।
PNG ऑप्टिमाइज़र क्या करता है जो ब्राउज़र नहीं कर सकता
pngquant जैसे टूल ज़्यादा ज़ोर से कंप्रेस नहीं करते; वे रंग घटाते हैं। 24-बिट ट्रूकलर 256 रंगों की पैलेट बन जाता है और इमेज प्रति पिक्सेल तीन-चार बाइट से एक पर आ जाती है, जो स्क्रीनशॉट से आम तौर पर 60–70% हटा देता है बिना दिखने वाले फ़र्क़ के। यह बिना नुक़सान वाले फ़ॉर्मैट पर किया गया नुक़सान वाला क़दम है, और यही वजह है कि कमांड-लाइन ऑप्टिमाइज़र किसी भी वेब पेज से आगे निकल जाता है। ब्राउज़र वहाँ नहीं पहुँच सकता: कैनवस 8-बिट RGBA देता है और उसका PNG एनकोडर अल्फ़ा चैनल के साथ ट्रूकलर लिखता है, पैलेट माँगने या फ़िल्टर चुनने का कोई तरीक़ा नहीं।
इसका एक नतीजा है जो ब्राउज़र वाला कोई भी PNG टूल इस्तेमाल करने से पहले जानना चाहिए। पहले से ऑप्टिमाइज़ की गई PNG-8 कैनवस से दोबारा बनने पर 32-बिट RGBA बनकर लौटती है और अक्सर पहले से बड़ी होती है। अगर फ़ाइल pngquant या रंग घटाने वाले किसी एक्सपोर्ट से गुज़र चुकी है, तो उसे छोड़ दीजिए: उसका आकार घटाना अब भी सुरक्षित है, उसी आकार पर दोबारा बनाना नहीं।
जब जवाब यह हो कि इसे PNG होना ही नहीं चाहिए
PNG में सहेजी गई फ़ोटो आम तौर पर अच्छी JPEG से पाँच से दस गुना होती है, बिना कुछ पाए। अल्फ़ा चैनल दूसरी चुप क़ीमत है: पूरी तरह ठोस इमेज PNG-32 में हर पिक्सेल पर एक चौथा बाइट रखती है जो हर जगह 255 है, और DEFLATE उसे लगभग शून्य कर देता है, इसलिए यह जितना लगता है उससे सस्ता है, पर फिर भी बिना वजह रखा गया चैनल है। अगर तस्वीर फ़ोटो जैसी है और उसमें पारदर्शिता नहीं, तो बदलाव ही कंप्रेशन है।
लोग इसे किस काम में लेते हैं
- 2× डिस्प्ले पर लिए स्क्रीनशॉट को डॉक्यूमेंट में डालने से पहले आधा करना
- ग़लती से PNG में एक्सपोर्ट हुई फ़ोटो को बदलना
- पारदर्शी लोगो को ईमेल सिग्नेचर लायक़ आकार में लाना
- एक्सपोर्ट किए इंटरफ़ेस एसेट्स का फ़ोल्डर छोटा करना
- यह तय करना कि किसी फ़ाइल को PNG होना भी चाहिए या नहीं
सवाल
क्योंकि PNG बिना नुक़सान वाली है: फ़िल्टर और DEFLATE, कुछ फेंका नहीं जाता। क्वालिटी तभी लागू होती है जब आउटपुट WebP या JPEG करें।
शायद वह पैलेट वाली PNG-8 थी। ब्राउज़र का कैनवस 32-बिट RGBA में दोबारा बनाता है, जो पैलेट से प्रति पिक्सेल ज़्यादा बाइट है। ऐसी फ़ाइल को दोबारा बनाने के बजाय उसका आकार घटाइए।
वह इमेज को 256 रंगों में बदलता है, जो नुक़सान वाला क़दम है, और उसे प्रति पिक्सेल एक बाइट पर ले आता है। कोई ब्राउज़र API पैलेट एनकोडिंग नहीं देता, इसलिए वेब पेज यह नहीं कर सकता।
उसका आकार सीमित कीजिए, या उसे WebP में बदलिए, जो पारदर्शिता रखता है और उसी आकार पर आम तौर पर काफ़ी छोटा होता है।
हाँ। जहाँ पारदर्शिता भी ज़रूरी हो और फ़ाइल का आकार भी, वहाँ यह PNG की स्वाभाविक जगह है।
Retina कैप्चर। 2× डिस्प्ले हर दिशा में दोगुने पिक्सेल रिकॉर्ड करता है, यानी चार गुना डेटा, उस तस्वीर के लिए जो अपने CSS आकार पर देखी जाएगी।
नहीं। सब कुछ आपके ब्राउज़र में चलता है, इसलिए न अपलोड न क़तार।