आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप ICO को BMP में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
ICO से BMP
ICO 139 KB → BMP 450 KB 3.2× बड़ी
ICO 7 KB → BMP 450 KB 64.4× बड़ी
ICO 3 KB → BMP 450 KB 175.2× बड़ी
दोनों Microsoft से आए और साथ बने। मूल आइकन फ़ॉर्मेट अलग तस्वीर को लपेटता भी नहीं था — हर प्रविष्टि में बिटमैप हेडर के बाद रंग डेटा और एक-बिट मास्क होता था जो बताता था कौन-सा पिक्सेल छोड़ना है। ICO असल में डायरेक्ट्री में रखी बिटमैप ही थी, एक स्टेंसिल के साथ।
फिर दोनों अलग रास्ते पर चले। आइकन को Windows XP में असली आठ-बिट अल्फ़ा चैनल मिला और Vista में PNG पेलोड ढोने की क्षमता, जो आज बड़ी प्रविष्टियों में इस्तेमाल होती है। यह कन्वर्टर जो बिटमैप लिखता है वह 24-बिट बेसलाइन है, जिसे इनमें से कुछ नहीं मिला। एक को दूसरे में बदलना क्षमता में पीछे हटना है, किया इसलिए जाता है कि दूसरे छोर पर कुछ इसे माँगता है।
एनकोडर 24 बिट प्रति पिक्सेल लिखता है: आठ नीला, आठ हरा, आठ लाल, और कुछ नहीं। एक BMP हेडर संस्करण अल्फ़ा चैनल परिभाषित करता है और ऐसी फ़ाइलें मौजूद भी हैं, पर लगभग कुछ भी उसे भरोसे से नहीं पढ़ता — यही वह भरोसे की दिक़्क़त है जिससे बचने के लिए आम तौर पर BMP चुना जाता है।
तो पारदर्शिता को एनकोडर चलने से पहले कहीं जाना है, और यह तय बैकग्राउंड सेटिंग करती है। सफ़ेद डिफ़ॉल्ट है। जिस सतह पर बिटमैप बनेगी उसका रंग चुनिए — किसी इंस्टॉलर बैनर का बैकग्राउंड, किसी एम्बेडेड डिस्प्ले का पैनल रंग। एक टेस्ट आइकन के पारदर्शी कोनों में नतीजा 255,255,255 आया, जो सही है और गहरे भूरे पैनल के लिए ग़लत जवाब भी।
यह कोई ख़राबी नहीं, यही BMP के होने की पूरी वजह है। हर पिक्सेल तीन बाइट लेता है चाहे उसमें कुछ भी हो, तो फ़ाइल का आकार अंदाज़ा नहीं, हिसाब है: चौड़ाई गुणा तीन, चार तक गोल, गुणा ऊँचाई, प्लस चौवन बाइट हेडर।
256-पिक्सेल वर्ग के लिए यह प्रति पंक्ति 768 बाइट और 196,608 बाइट पिक्सेल, यानी कुल 196,662। 8,471 बाइट के टेस्ट आइकन से मापें तो बिटमैप उसका तेईस गुना से ज़्यादा है। अगर गंतव्य पर आकार की सीमा है, तो यह गुणा बदलने से पहले कर लीजिए, बाद में नहीं।
फ़ाइल की सबसे बड़ी वाली। डिकोडिंग आपके ब्राउज़र के आइकन रीडर से होती है, जो डायरेक्ट्री में सबसे बड़ी प्रविष्टि लौटाता है — 16, 32, 48 और 256 पिक्सेल की चार अलग-रंग वाली तस्वीरों से एक फ़ाइल बनाकर और डायरेक्ट्री को तीन अलग क्रम में लिखकर जाँचा गया। हर बार 256-पिक्सेल वाली ही आई।
छोटी प्रविष्टियाँ कहीं नहीं लिखी जातीं और उन तक पहुँचने की कोई सेटिंग नहीं। अगर जो सॉफ़्टवेयर आप भर रहे हैं उसे 32-पिक्सेल बिटमैप चाहिए और आइकन में 32-पिक्सेल प्रविष्टि है, तो GIMP जैसा आइकन एडिटर वह लेयर सीधे एक्सपोर्ट कर सकता है, जो 256-पिक्सेल वाली को छोटा करने से बेहतर नतीजा है।
दो बातें जानने लायक़ अगर आप बाइट सीधे पढ़ रहे हैं। BMP अपनी पंक्तियाँ तस्वीर के नीचे से ऊपर की तरफ़ रखता है, और हर पिक्सेल को नीला, फिर हरा, फिर लाल के क्रम में। दोनों स्पेसिफ़िकेशन में हैं और दोनों आम तौर पर पहली बार इसे पार्स करने वाले को चौंकाते हैं।
हर पंक्ति चार बाइट तक भी पैड होती है, जो विषम चौड़ाई पर मायने रखता है: 33-पिक्सेल चौड़ी बिटमैप में हर पंक्ति में 99 बाइट रंग का और एक बाइट पैडिंग होता है, यानी 100। 256 पिक्सेल पर पंक्ति 768 बाइट की है और कोई पैडिंग नहीं चाहिए, यही वजह है आइकन-आकार की बिटमैप हाथ से समझनी आसान होती हैं।
क्योंकि इसे पढ़ने के लिए कोई डिकोडर नहीं चाहिए। छोटे डिस्प्ले को चलाने वाला माइक्रोकंट्रोलर एक लूप और हेडर ऑफ़सेट से बाइट सीधे फ़्रेमबफ़र में कॉपी कर सकता है; उसी फ़र्मवेयर में PNG डिकोडर जोड़ने का मतलब है डीकंप्रेसर, मेमोरी अलोकेटर और चंक पार्सर जोड़ना, ऐसे डिवाइस में जिसके पास शायद 32 KB रैम हो।
यही तर्क इंस्टॉलर संसाधनों, पुराने Windows कंट्रोल जो प्लेटफ़ॉर्म के अपने बिटमैप फ़ंक्शन से संसाधन लोड करते हैं, और उन टेस्ट फ़िक्स्चर पर लागू होता है जो बिना कोडेक के बाइट-दर-बाइट तस्वीरें मिलाना चाहते हैं। इन सबमें, पूर्वानुमेयता आकार से कहीं ज़्यादा मायने रखती है।
दोनों फ़ॉर्मेट लॉसलेस हैं, और इस रास्ते पर कोई क्वालिटी सेटिंग नहीं क्योंकि तौलने को कुछ नहीं। फ़्लैटनिंग से बचा हर पिक्सेल आइकन में जो था बिल्कुल वही है, तो एक ही फ़ाइल दो बार बदलने पर एक जैसा नतीजा मिलता है और बाद में फिर इस क़दम से गुज़रने पर पीढ़ी का नुक़सान नहीं होता।
जो सच में खोता है वह है अल्फ़ा चैनल, जो बैकग्राउंड रंग से बदल जाता है, और कंटेनर की बाक़ी प्रविष्टियाँ। बिटमैप बनने के बाद इनमें से कुछ भी वापस नहीं मिलता, यही मूल आइकन फ़ाइल को न बदलकर रखने की दलील है।
अगर गंतव्य आधुनिक सॉफ़्टवेयर है जिसकी बस पसंद है, सख़्त ज़रूरत नहीं, तो PNG दो दर्जे छोटी होती है और पारदर्शिता भी रखती है। वही टेस्ट आइकन PNG के तौर पर 1,737 बाइट था, बिटमैप के 196,662 के मुक़ाबले — इतना बड़ा फ़र्क़ कि एक ईमेल भेजकर पूछने लायक़ है कि क्या BMP वाक़ई ज़रूरी है।
जहाँ जवाब हाँ है — फ़र्मवेयर, इंस्टॉलर स्क्रिप्ट, बाइट-स्तर तुलना वाला फ़िक्स्चर — बिटमैप सही है और आकार वह क़ीमत है जो बिना डिकोडर के पढ़े जाने के लिए चुकानी पड़ती है। इसे कमिट संदेश में कह दीजिए, क्योंकि छोटे आइकन के लिए 200 KB फ़ाइल अगली बार समीक्षा करने वाले को ग़लती जैसी लगेगी।
पूरा सेट छोड़िए। हर फ़ाइल डिकोड होकर उसी बैकग्राउंड रंग पर फ़्लैट होकर अलग लिखी जाती है, और सब कुछ एक ZIP में लौटता है। इन गंतव्यों के लिए बैच पर साझा बैकग्राउंड आम तौर पर सही है, क्योंकि तस्वीरें एक ही सतह पर मिलाई जा रही हैं।
नतीजे में नाप मान न लें, जाँच लें। सालों में बना आइकन सेट 256 पिक्सेल तक जाने वाली प्रविष्टियों को 32 पर रुकने वाली के साथ मिलाता है, और बिटमैप वही फैलाव अपनाती हैं — दोनों छोर के फ़ाइल आकार में चौंसठ गुना का फ़र्क़ लिए।
| ICO | BMP | |
|---|---|---|
| पूरा नाम | Windows आइकॉन | Windows बिटमैप |
| फ़ाइल एक्सटेंशन | .ico | .bmp, .dib |
| मीडिया टाइप | image/x-icon | image/bmp |
| कंप्रेशन | बिना नुक़सान — कुछ छोड़ा नहीं जाता | बिना कंप्रेशन |
| पहली बार प्रकाशित | 1985 | 1987 |
| प्रकाशक | Microsoft | Microsoft |
| लाइसेंस | प्रकाशित, मानकीकृत नहीं | प्रकाशित, मानकीकृत नहीं |
| आज की स्थिति | सीमित उपयोग | पुराना, फिर भी हर जगह पढ़ा जाता है |
| बिट डेप्थ | 8 | 8 |
| रंग जो यह दर्ज कर सकता है | RGB, इंडेक्स्ड पैलेट | RGB, इंडेक्स्ड पैलेट |
| सबसे बड़ी इमेज | हर तरफ़ 256 px | — |
| ब्राउज़र में खुलता है | हर ब्राउज़र | हर ब्राउज़र |
| इसकी जगह विचारणीय | PNG, SVG | PNG, TIFF |
BMP में अल्फ़ा चैनल होता ही नहीं। पारदर्शी ICO फ़ाइल बाहर आती है तो वे हिस्से भरे हुए मिलते हैं — सफ़ेद, जब तक आप कुछ और न चुनें — और BMP की कोई सेटिंग उस पारदर्शिता को वापस नहीं ला सकती।
GIMP ICO और BMP — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
BMP सैंपल कच्चे रूप में रखता है, इसलिए फ़ाइल ख़ूब बढ़ जाती है और बदले में कुछ मिलता नहीं। इस दिशा का मतलब सिर्फ़ तब है जब दूसरी तरफ़ का कोई प्रोग्राम ICO लेता ही न हो — और वजह आम तौर पर यही होती भी है।
दोनों का निशाना अलग काम है: ICO का वेब पर, BMP का प्रोग्रामों के बीच डेटा ले जाना पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
ICO Microsoft का फ़ॉर्मेट है, जो 1985 में आया। यह हर चैनल पर 8 बिट में दर्ज करता है।
BMP Microsoft का है और 1987 से चला आ रहा है। Microsoft Paint, GIMP और IrfanView इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे jSquash है, तस्वीरों के संदर्भ कोडेक के WebAssembly संस्करण; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। jSquash आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
BMP कंप्रेस करता है, इसलिए कुछ डेटा जाता है। तयशुदा सेटिंग पर यह पकड़ में नहीं आता; पक्का करना हो तो गुणवत्ता बढ़ा दीजिए। जिस फ़ॉर्मेट में जाना है वह पारदर्शिता नहीं सँभालता, इसलिए पारदर्शी हिस्से पृष्ठभूमि के रंग से भर दिए जाते हैं।
BMP में अल्फ़ा चैनल होता ही नहीं। पारदर्शी ICO फ़ाइल बाहर आती है तो वे हिस्से भरे हुए मिलते हैं — सफ़ेद, जब तक आप कुछ और न चुनें — और BMP की कोई सेटिंग उस पारदर्शिता को वापस नहीं ला सकती।
BMP सैंपल कच्चे रूप में रखता है, इसलिए फ़ाइल ख़ूब बढ़ जाती है और बदले में कुछ मिलता नहीं। इस दिशा का मतलब सिर्फ़ तब है जब दूसरी तरफ़ का कोई प्रोग्राम ICO लेता ही न हो — और वजह आम तौर पर यही होती भी है।