आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप GIF को BMP में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
GIF से BMP
GIF 36 KB → BMP 450 KB 12.4× बड़ी
GIF 8 KB → BMP 450 KB 59.9× बड़ी
GIF 6 KB → BMP 450 KB 72.9× बड़ी
यह कन्वर्ज़न लगभग हमेशा एक ही वजह से होता है: कोई डिवाइस या पुराना प्रोग्राम जो सिर्फ़ बिटमैप पढ़ना जानता है। किसी लैब उपकरण का डिस्प्ले, किसी लेबल प्रिंटर का फ़र्मवेयर, कोई पुराना Visual Basic या Delphi नियंत्रण — इन सबने डिकोडर लिखने की ज़हमत कभी नहीं उठाई, क्योंकि बिटमैप को पढ़ना एक पेज भर के कोड में हो जाता है।
GIF और BMP लगभग हमउम्र हैं — 1987 और 1990 — पर विपरीत रास्ते चुनते हैं। GIF हर पिक्सेल के लिए 256 रंगों की सूची में एक इंडेक्स रखती है, यानी एक बाइट प्रति पिक्सेल, फिर LZW उसे और सिकोड़ता है। यहाँ लिखा गया बिटमैप हर पिक्सेल के लिए नीला, हरा और लाल — तीनों पूरे बाइट में, बिना किसी संपीड़न के रखता है।
इसमें अंदाज़ा लगाने को कुछ नहीं है, बस गुणा है। चौड़ाई को तीन से गुणा कीजिए, नतीजे को चार के गुणज तक पूरा कीजिए, ऊँचाई से गुणा कीजिए और 54 बाइट का हेडर जोड़ दीजिए। 480 गुणा 270 की GIF से 1,440 बाइट प्रति पंक्ति, कुल 388,800 बाइट पिक्सेल के और 388,854 बाइट पूरी फ़ाइल।
यह संख्या तस्वीर की सामग्री से बेपरवाह है — एक सादा लाल आयत भी उतनी ही बड़ी बिटमैप बनाता है जितनी कोई डिथर की हुई तस्वीर। यही अंदाज़ेबाज़ी हार्डवेयर को BMP पसंद कराती है: फ़र्मवेयर सिर्फ़ हेडर पढ़कर अपना बफ़र आवंटित कर सकता है।
दो चीज़ें ग़लती लगती हैं और नहीं हैं। पंक्तियाँ तस्वीर के सबसे नीचे से शुरू होकर ऊपर की ओर लिखी जाती हैं, और हर पिक्सेल के भीतर क्रम नीला-हरा-लाल है, उलटा नहीं। दोनों बातें असली विनिर्देश में हैं और हर BMP पाठक इन्हें ऐसे ही अपेक्षित मानता है।
तीसरी बात पैडिंग है। हर पंक्ति चार बाइट के गुणज तक भरी जाती है, तो 101 पिक्सेल चौड़ी तस्वीर 303 बाइट पिक्सेल के बाद एक ख़ाली बाइट लेती है — कुल 304 प्रति पंक्ति। जो कोड चौड़ाई को सीधे तीन से गुणा कर पंक्ति मान लेता है, उसकी तस्वीर तिरछी होकर टूटती दिखेगी।
BMP एक ही तस्वीर रखती है। उसमें क्रम, देरी या लूप का कोई खयाल ही नहीं, इसलिए एनिमेटेड GIF यहाँ पहुँचकर अपने पहले फ़्रेम पर टिक जाती है और बाक़ी सब हट जाता है — यह रजिस्ट्री की चेतावनी है, कोई बाद में खुलने वाला आश्चर्य नहीं।
जो उपकरण BMP माँगते हैं उनके लिए यह शायद ही मुश्किल है, क्योंकि जिसे बिटमैप चाहिए उसे परिभाषा से ही एक स्थिर तस्वीर चाहिए। बस यह देख लीजिए कि पहला फ़्रेम वही है जो आप चाहते थे — बहुत सी GIF किसी ख़ाली या शीर्षक वाले फ़्रेम से खुलती हैं।
यह उम्मीद रखना ठीक लगता है कि सिर्फ़ 256 रंगों वाली तस्वीर छोटी फ़ाइल बनेगी, और किसी पैलेट-आधारित फ़ॉर्मेट के लिए वह सच होता। BMP का विनिर्देश ऐसा 8-बिट रंग-सारणी वाला संस्करण अनुमति भी देता है, जो GIF से लगभग पूरी तरह मेल खाता।
यह कन्वर्टर वह नहीं लिखता। हर बिटमैप 24-बिट ही निकलती है, तो छह रंगों वाली GIF उतनी ही बाइट लेती है जितनी उसी आकार की फ़ोटो। अगर आपका उपकरण ठीक-ठीक 8-बिट पैलेट वाली BMP माँगता है, यह फ़ाइल उसके काम नहीं आएगी — यह बात उपकरण के मना करने से पहले जान लेना बेहतर है।
GIF अपनी पैलेट में एक प्रविष्टि को पारदर्शी नाम दे सकती है। यहाँ लिखी जाने वाली बिटमैप में अल्फ़ा चैनल है ही नहीं — 24 बिट, तीन चैनल, कुछ और बचता नहीं — इसलिए एनकोड होने से पहले उन पिक्सेलों को कोई रंग देना पड़ता है।
पृष्ठभूमि रंग का विकल्प यही तय करता है और तयशुदा रूप से सफ़ेद रहता है। किसी डिवाइस के लिए इसे सोच-समझकर चुनना ज़रूरी है — काली इंटरफ़ेस वाले डिस्प्ले के लिए आइकन काले पर चपटा होना चाहिए, सफ़ेद पर नहीं। जहाँ क्रोमा-की चाहिए, वही सटीक रंग सेट कीजिए।
इस कन्वर्ज़न में गुणवत्ता का कोई पैमाना नहीं है और हो भी नहीं सकता — बिना संपीड़न का मतलब है बिना संपीड़न, यहाँ कुछ भी बदलने को नहीं। इकलौता लीवर अधिकतम चौड़ाई है, जो पिक्सेल लिखे जाने से पहले तस्वीर को छोटा करती है और इसलिए आकार को गुणित रूप से घटाती है।
चौड़ाई आधी करने से बिटमैप चौथाई रह जाती है। छोटे डिस्प्ले के लिए यह सही चाल है — 128 पिक्सेल चौड़े पैनल को 640 पिक्सेल के स्रोत से कुछ हासिल नहीं होता, और यहाँ छोटा करने से डिवाइस को बड़ा बफ़र रखने की ज़रूरत ही नहीं पड़ती।
यहाँ हर रास्टर कन्वर्ज़न मेटाडेटा बिना शर्त हटा देता है, पर इस जोड़ी पर उस नियम का काम बहुत कम है। GIF में EXIF ब्लॉक नहीं होता, कैमरा मॉडल नहीं, GPS निर्देशांक नहीं — ज़्यादा से ज़्यादा कोई टिप्पणी या ऐप्लिकेशन एक्सटेंशन बचता है।
बिटमैप फ़ॉर्मेट के पास वैसे भी उसे रखने की जगह नहीं। उसका हेडर आयाम और बिट-गहराई बताता है, बस इतना ही — तो बाहर पिक्सेल और आकार के अलावा कुछ नहीं आता। किसी स्क्रीन-रिकॉर्डर ने टिप्पणी में जो नाम भरा हो, वह साथ नहीं आता।
GIF को ब्राउज़र की अपनी इमेज सुविधा डिकोड करती है और बिटमैप का हेडर व पिक्सेल पंक्तियाँ उसी टैब में JavaScript लिखता है। कोई सर्वर बीच में नहीं, कोई अपलोड नहीं, कोई खाता नहीं, और टैब बंद होते ही फ़ाइल मिट जाती है।
यह इस जोड़ी पर ख़ासतौर पर मायने रखता है, क्योंकि जो चीज़ें लोग BMP में बदलते हैं वे अक्सर भीतरी होती हैं — किसी नियंत्रण पैनल की तस्वीर, किसी उत्पाद का लेबल, किसी उपकरण की स्प्लैश स्क्रीन। इनमें से किसी को भी बिटमैप बनने के लिए किसी और के सर्वर से गुज़रने की ज़रूरत नहीं।
| GIF | BMP | |
|---|---|---|
| पूरा नाम | Graphics Interchange Format | Windows बिटमैप |
| फ़ाइल एक्सटेंशन | .gif | .bmp, .dib |
| मीडिया टाइप | image/gif | image/bmp |
| कंप्रेशन | बिना नुक़सान — कुछ छोड़ा नहीं जाता | बिना कंप्रेशन |
| पहली बार प्रकाशित | 1987 | 1987 |
| प्रकाशक | CompuServe | Microsoft |
| विनिर्देश | GIF89a | — |
| लाइसेंस | खुला मानक | प्रकाशित, मानकीकृत नहीं |
| आज की स्थिति | पुराना, फिर भी हर जगह पढ़ा जाता है | पुराना, फिर भी हर जगह पढ़ा जाता है |
| बिट डेप्थ | 8 | 8 |
| रंग जो यह दर्ज कर सकता है | इंडेक्स्ड पैलेट | RGB, इंडेक्स्ड पैलेट |
| सबसे बड़ी इमेज | हर तरफ़ 65,535 px | — |
| ब्राउज़र में खुलता है | हर ब्राउज़र | हर ब्राउज़र |
| इसकी जगह विचारणीय | WebP, MP4 | PNG, TIFF |
BMP में अल्फ़ा चैनल होता ही नहीं। पारदर्शी GIF फ़ाइल बाहर आती है तो वे हिस्से भरे हुए मिलते हैं — सफ़ेद, जब तक आप कुछ और न चुनें — और BMP की कोई सेटिंग उस पारदर्शिता को वापस नहीं ला सकती।
BMP में एक ठहरा हुआ फ़्रेम होता है। चलती हुई GIF फ़ाइल में से पहला फ़्रेम बचता है और बाक़ी छूट जाता है: यह कन्वर्ज़न उसमें से एक तस्वीर निकालता है, हरकत साथ नहीं ले जाता।
GIMP GIF और BMP — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
BMP सैंपल कच्चे रूप में रखता है, इसलिए फ़ाइल ख़ूब बढ़ जाती है और बदले में कुछ मिलता नहीं। इस दिशा का मतलब सिर्फ़ तब है जब दूसरी तरफ़ का कोई प्रोग्राम GIF लेता ही न हो — और वजह आम तौर पर यही होती भी है।
दोनों का निशाना अलग काम है: GIF का वेब पर, BMP का प्रोग्रामों के बीच डेटा ले जाना पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
GIF CompuServe का फ़ॉर्मेट है, जो 1987 में आया। यह हर चैनल पर 8 बिट में दर्ज करता है।
BMP Microsoft का है और 1987 से चला आ रहा है। Microsoft Paint, GIMP और IrfanView इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे jSquash है, तस्वीरों के संदर्भ कोडेक के WebAssembly संस्करण; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। jSquash आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
BMP कंप्रेस करता है, इसलिए कुछ डेटा जाता है। तयशुदा सेटिंग पर यह पकड़ में नहीं आता; पक्का करना हो तो गुणवत्ता बढ़ा दीजिए। सिर्फ़ पहला फ़्रेम बदला जाता है: चलती हुई GIF ठहरी हुई तस्वीर बन जाती है।
BMP में अल्फ़ा चैनल होता ही नहीं। पारदर्शी GIF फ़ाइल बाहर आती है तो वे हिस्से भरे हुए मिलते हैं — सफ़ेद, जब तक आप कुछ और न चुनें — और BMP की कोई सेटिंग उस पारदर्शिता को वापस नहीं ला सकती।
BMP में एक ठहरा हुआ फ़्रेम होता है। चलती हुई GIF फ़ाइल में से पहला फ़्रेम बचता है और बाक़ी छूट जाता है: यह कन्वर्ज़न उसमें से एक तस्वीर निकालता है, हरकत साथ नहीं ले जाता।
BMP सैंपल कच्चे रूप में रखता है, इसलिए फ़ाइल ख़ूब बढ़ जाती है और बदले में कुछ मिलता नहीं। इस दिशा का मतलब सिर्फ़ तब है जब दूसरी तरफ़ का कोई प्रोग्राम GIF लेता ही न हो — और वजह आम तौर पर यही होती भी है।
इस पेज पर GIF और BMP के बारे में जो कहा गया है, वह जाँचा जा सकता है, और ये रहे वे दस्तावेज़ जो उसे तय करते हैं।