# GIF एनालाइज़र — GIF के अंदर असल में क्या है

फ़्रेम, देरी, पैलेट, और हर बाइट कहाँ गया।

> GIF को अपने ब्राउज़र में खोलकर देखिए: हर फ़्रेम की देरी और डिस्पोज़ल, कलर टेबल, लूप की गिनती, और फ़ाइल का साइज़ कहाँ गया इसका बाइट-दर-बाइट ब्योरा। कुछ अपलोड नहीं होता।

यह पेज एक इंटरैक्टिव टूल है जो पूरी तरह आपके ब्राउज़र में चलता है, https://abox.tools/hi/gif-analyzer/ पर — आप इसे जो भी देते हैं, वह कहीं अपलोड नहीं होता। आगे वह सब कुछ है जो यह पेज इस टूल के बारे में शब्दों में कहता है; इसे इस्तेमाल करने के लिए यह पता खोलें।

## यह टूल GIF **कभी अपलोड नहीं करता**। यहाँ कोई सर्वर है ही नहीं।

फ़ाइल को खोलना और खोलकर देखना, दोनों आपका अपना ब्राउज़र करता है। ब्लॉक की बनावट, LZW खोलना और इस पेज पर बना हर फ़्रेम, सब इसी डिवाइस पर होता है। मान लीजिए यहाँ कुछ भेजना भी चाहता, तो इस पेज के दूसरी तरफ़ ऐसा कोई सर्वर ही नहीं है जिसे फ़ाइल भेजी जा सके।

- ✗ कोई अपलोड नहीं
- ✗ कोई खाता नहीं
- ✓ ऑफ़लाइन चलता है
- ✓ ओपन सोर्स
- ✓ फ़ाइलें आपके डिवाइस पर ही रहती हैं

## GIF का विश्लेषण कैसे करें

1. **एक GIF चुनिए।** उसे चुनने वाले खाने में खींचकर छोड़ दीजिए या खुद ढूँढ़ लीजिए। ब्राउज़र उसे सीधे आपकी डिस्क से पढ़ता है, और इस बीच कुछ भी कहीं नहीं जाता।
2. **पहले सारांश पढ़िए।** कैनवस का आकार, फ़्रेम की गिनती, एनिमेशन खुद को कितना लंबा बताता है, और असल में कितना चलता है। ये आखिरी दो लोगों की उम्मीद से कहीं ज़्यादा बार अलग निकलते हैं, और वजह अगले हिस्से में है।
3. **जो चीज़ें उभरकर आती हैं, उन्हें देखिए।** वहाँ की हर पंक्ति आपकी फ़ाइल से नापी गई है: ऐसी देरी जिसे कोई ब्राउज़र नहीं मानेगा, गायब लूप ब्लॉक, ऐसी कलर टेबल जिनका कोई हवाला नहीं देता, कुछ फ़्रेम से भी बड़ा मेटाडेटा। इनमें से कुछ भी इस बारे में अंदाज़ा नहीं है कि आप क्या बनाना चाहते थे।
4. **देखिए कि बाइट कहाँ गए।** फ़ाइल का हर बाइट ठीक एक ही पंक्ति में है, और पंक्तियाँ मिलकर पूरी फ़ाइल बनती हैं। अगर ज़्यादातर हिस्सा “कंप्रेस्ड पिक्सल” में नहीं है, तो बाकी तालिका बता देती है कि वह कहाँ है।
5. **फ़्रेम एक-एक करके देखिए।** हर फ़्रेम अपनी देरी, अपना आयत, अपना डिस्पोज़ल तरीका और अपना साइज़ दिखाता है। “हर फ़्रेम के बाद का कैनवस” और “हर फ़्रेम जो सहेजता है सिर्फ़ वही” के बीच बदलकर देखिए। फ़ाइल ऑप्टिमाइज़ है या नहीं, यह दूसरे से पता चलता है, क्योंकि अच्छी बनी GIF छोटे-छोटे आयत सहेजती है और खराब बनी हर बार पूरी तस्वीर।
6. **ज़रूरत हो तो रिपोर्ट ले जाइए।** पूरा विश्लेषण सादे टेक्स्ट में, किसी संदेश में चिपकाने या फ़ाइल के साथ रख लेने के लिए। यह पेज के भीतर, उसी से बनता है जो पहले से आपकी स्क्रीन पर है।

## विस्तार से

[GIF के भीतर असल में क्या है](https://abox.tools/hi/guides/whats-inside-a-gif/): फ़्रेम, देरी, निपटाने के तरीके और रंगों की तालिकाएँ समझाई गईं, ब्राउज़र सबसे तेज़ देरी क्यों नहीं मानते, और किसी GIF का आकार असल में कहाँ चला गया यह कैसे पता करें।

## बॉक्स में और भी टूल

- [तस्वीरों से वीडियो](https://abox.tools/hi/images-to-video/): तस्वीरों के एक फ़ोल्डर को वीडियो बना दीजिए।
- [वीडियो कटर](https://abox.tools/hi/trim-video/): चलते-चलते उन हिस्सों पर निशान लगाइए जो रखने लायक हैं। उन्हें एक ही वीडियो के रूप में वापस पाइए।
- [वीडियो क्रॉपर](https://abox.tools/hi/crop-video/): क्लिप में से उतना ही रखिए जितना काम का है।
- [वीडियो रिवर्सर](https://abox.tools/hi/reverse-video/): आखिरी फ़्रेम सबसे पहले, आवाज़ समेत।

## सवाल

### क्या मेरा GIF कहीं अपलोड होता है?

नहीं। फ़ाइल को आपका अपना ब्राउज़र आपके अपने हार्डवेयर पर पढ़ता, खोलता और बनाता है। इस टूल का कोई सर्वर वाला हिस्सा है ही नहीं, और पेज की `Content-Security-Policy` में वे सारे पते लिखे हैं जिनसे यह बात कर सकता है, जिनमें से एक भी इस साइट का नहीं है। नेटवर्क काट दीजिए, यह फिर भी GIF एनालाइज़ करता रहेगा।

### मेरी GIF देरी में लिखे से धीमी क्यों चलती है?

क्योंकि हर ब्राउज़र सेकंड के दो सौवें हिस्से से कम देरी मानने से इनकार कर देता है और उसकी जगह फ़्रेम को दसवें हिस्से तक रोके रखता है। यह नियम 1996 में Netscape में लिखा गया था, उस ज़माने के घूमते ग्लोब और “निर्माणाधीन” बोर्ड के लिए, और तब से हर ब्राउज़र में उतारा गया है; हटाया कभी किसी ने नहीं। \
\
तो जिस GIF के सारे फ़्रेम 0.01 सेकंड कहते हैं, वह 100 फ़्रेम प्रति सेकंड पर नहीं चलती। वह 10 पर चलती है, यानी बनाने वाले सॉफ़्टवेयर की मंशा से पाँच से दस गुना धीमी। यह पेज दोनों आँकड़े दिखाता है, फ़ाइल क्या कहती है और वह असल में क्या करेगी, और जिन फ़्रेम पर असर पड़ता है उन्हें निशान लगा देता है। सुधार वहीं होगा जहाँ फ़ाइल बनी थी: 0.01 की जगह 0.02 लिखिए।

### “डिस्पोज़ल” का क्या मतलब है?

किसी फ़्रेम का समय खत्म होने पर स्क्रीन पर क्या छोड़ना है। एनिमेशन ठीक दिखेगा या धब्बे छोड़ेगा, यह इसी फ़ील्ड से तय होता है। \
\
**जहाँ है वहीं रहने दीजिए** का मतलब है कि अगला फ़्रेम इसी के ऊपर पुत जाएगा, और जब फ़्रेम अपारदर्शी हों और एक-दूसरे को ढँकते हों तो यही चाहिए। **बैकग्राउंड तक साफ़ कर दीजिए** पहले फ़्रेम का आयत पोंछ देता है, और ट्रांसपेरेंसी को यही चाहिए, वरना अगले फ़्रेम के आर-पार दिखने वाले हिस्सों में पिछला फ़्रेम झलकता है। **नीचे जो था वह लौटा दीजिए** वही वापस रख देता है जो इस फ़्रेम के बनने से पहले वहाँ था, और स्थिर बैकग्राउंड पर चलती छोटी चीज़ इसी तरह सहेजी जाती है। और **बताया ही नहीं गया** का मतलब है कि फ़ाइल ने कुछ कहा ही नहीं, और हर व्यूअर उसे “जहाँ है वहीं रहने दीजिए” मान लेता है।

### मेरी GIF इतनी बड़ी क्यों है?

“बाइट कहाँ गए” वाली तालिका यह आम तौर पर नहीं, आपकी उसी फ़ाइल के लिए बताती है, और मुमकिन जवाब गिनती के ही हैं। \
\
अगर लगभग सब कुछ **कंप्रेस्ड पिक्सल** में है, तो फ़ाइल में बस तस्वीर ही बहुत है: GIF हर फ़्रेम को पूरे पिक्सल के रूप में सहेजती है, न मोशन कंपनसेशन, न क्वालिटी का कोई घुंडी वाला नियंत्रण। इसलिए साइज़ मोटे तौर पर क्षेत्रफल गुणा फ़्रेम की गिनती है। कम फ़्रेम, छोटा आकार या कम रंग, बस यही तीन लीवर हैं। \
\
अगर बड़ा हिस्सा **कलर टेबल** में है, तो फ़ाइल हर फ़्रेम के लिए अलग पैलेट लिख रही है, 768 बाइट प्रति पैलेट। अगर बड़ा हिस्सा **मेटाडेटा** में है, तो किसी एडिटर ने XMP पैकेट छोड़ दिया है, और उसे तस्वीर छुए बिना हटाया जा सकता है। और अगर सारे फ़्रेम पूरा कैनवस ढँकते हैं, तो एनकोडर ने कभी निकाला ही नहीं कि असल में कौन-सा हिस्सा बदला। जो चीज़ फ़िल्माई या रिकॉर्ड की गई हो, उसमें यही फ़ाइल का बड़ा हिस्सा होता है।

### फ़्रेम की दोनों व्यू में क्या फ़र्क है?

**हर फ़्रेम के बाद का कैनवस** वह है जो कोई व्यूअर उस पल दिखाता है, यानी यह फ़्रेम पिछले फ़्रेम की छोड़ी हुई चीज़ों के ऊपर। **हर फ़्रेम जो सहेजता है सिर्फ़ वही** वह आयत है जो फ़ाइल उस फ़्रेम के लिए सचमुच रखती है, अकेला, नीचे कुछ भी बिछाए बिना। \
\
दिलचस्प दूसरा वाला है। GIF किसी फ़्रेम में तस्वीर का सिर्फ़ बदला हुआ हिस्सा सहेज सकती है, और इसीलिए लगभग स्थिर विंडो की स्क्रीन रिकॉर्डिंग छोटी रह सकती है। अगर आपकी फ़ाइल का हर फ़्रेम पूरा कैनवस है, तो यह काम किसी ने किया ही नहीं, और एनिमेशन देखकर यह पता नहीं चलता, सिर्फ़ सहेजी हुई चीज़ देखकर चलता है।

### यह कह रहा है कि मेरी फ़ाइल में कमेंट या XMP है। वह क्या है?

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

### क्या यह खराब GIF भी खोल लेता है?

कोशिश करता है, और बता देता है कि कहाँ जाकर उसने हाथ खड़े किए। जो फ़ाइल किसी ब्लॉक के बीच खत्म हो जाए, जहाँ ब्लॉक का निशान होना चाहिए वहाँ कोई और बाइट हो, या जिसमें ऐसा फ़्रेम हो जिसका कंप्रेस्ड डेटा जल्दी चुक जाए, उसमें भी उस बिंदु तक जो कुछ पढ़ा जा सका, सब दिखता है, और सबसे ऊपर लिखा होता है कि दिक्कत क्या थी। एनालाइज़र की सबसे ज़्यादा ज़रूरत यहीं पड़ती है, इसलिए एक खराब बाइट के चक्कर में पूरी फ़ाइल फेंक देना गलत बर्ताव होता।

### क्या यह मेरी फ़ाइल बदलता है?

नहीं। यह टूल सिर्फ़ पढ़ता है। न कोई आउटपुट फ़ाइल है, न दोबारा एनकोडिंग, न यहाँ कोई ऐसा बटन जो GIF लिखता हो। डाउनलोड करने को सिर्फ़ विश्लेषण की सादे टेक्स्ट वाली कॉपी है। आपका असली फ़ाइल आपकी डिस्क पर ज्यों की त्यों है, और टैब बंद करने पर क्या होगा, उसका ईमानदार जवाब भी यही है।

### क्या यह मुफ़्त है, और क्या इसके लिए खाता बनाना पड़ेगा?

यह मुफ़्त है, और यहाँ न कोई खाता है, न साइन-इन, न ट्रायल। फ़ाइल के साइज़ पर भी आपके अपने डिवाइस की मेमोरी के अलावा कोई सीमा नहीं है। साइट पर विज्ञापन हैं और खर्च वही उठाते हैं, लेकिन विज्ञापनों को आपकी फ़ाइल के बारे में कुछ नहीं दिया जाता।

### क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कर लीजिए, फिर इंटरनेट काट दीजिए, यह चलता रहेगा। कुछ अपलोड नहीं हो रहा, यह साबित करने का सबसे आसान तरीका भी यही है। जो टूल आपका GIF एनालाइज़ करने के लिए कहीं भेजता, वह प्लग निकालते ही रुक जाता।

## प्राइवेसी का यह दावा कैसे जाँचा जा सकता है

- **आपके GIF के पास बाहर जाने का रास्ता ही नहीं है।** Content-Security-Policy में वे सारे पते लिखे हैं जिनसे यह पेज बात कर सकता है, और उनमें से एक भी इस साइट का नहीं है। यहाँ ऐसा कोई ठिकाना है ही नहीं जहाँ आपकी फ़ाइल इकट्ठी की जा सके, और होता भी तो कोड में ऐसा कुछ नहीं है जो उसे वहाँ भेजे। पहले यहाँ `connect-src 'none'` लिखा था, जिसमें कोई अपवाद नहीं था। विज्ञापन की कीमत यही थी, और यह बता देना भी सौदे का हिस्सा है।
- **पढ़ने वाला हिस्सा इस रिपॉज़िटरी की चार फ़ाइलें हैं।** फ़ाइल में क्या है, यह पता करने के लिए यहाँ ब्राउज़र का अपना GIF डिकोडर इस्तेमाल नहीं होता, क्योंकि वह डिकोडर यह नहीं बताता कि कोई बाइट कहाँ गया। इसलिए फ़ॉर्मैट हाथ से पढ़ा जाता है: `src/gif.js` ब्लॉक-दर-ब्लॉक चलता है, `src/lzw.js` पिक्सल खोलता है, `src/frames.js` उन्हें एक पर एक रखता है, और `src/budget.js` हिस्सों को वापस जोड़कर देखता है कि वे फ़ाइल के साइज़ के बराबर बैठते हैं या नहीं।
- **कमेंट और मेटाडेटा आपको दिखते हैं, और किसी को नहीं।** किसी GIF में कमेंट ब्लॉक हो सकता है, किसी एडिट का ब्योरा देने वाला XMP पैकेट हो सकता है, या कलर प्रोफ़ाइल। यह पेज इन सबको छाप देता है। ये आपके सामने स्क्रीन पर आते हैं और वहीं तक रहते हैं। इस रिपॉज़िटरी में ऐसा कोई एनालिटिक्स इवेंट है ही नहीं जो इनमें से कुछ ले जाए, और होता भी तो यह पेज उसे भेज नहीं सकता।
- **Google क्या लोड करता है, और उसे क्या नहीं दिया जाता।** विज्ञापन और माप वाली स्क्रिप्ट Google से आती हैं। इनमें से किसी को भी आपकी फ़ाइल के बारे में कुछ नहीं सौंपा जाता, न फ़ाइल, न थंबनेल, न नाम, न साइज़, न फ़्रेम की गिनती, न कोई कमेंट। GIF को पढ़ने, खोलने या बनाने वाली हर पंक्ति इसी ऑरिजिन से आती है और रिपॉज़िटरी में मौजूद है।
- **दान का बटन क्या लोड करता है, और उसे क्या नहीं दिया जाता।** हेडर वाला “Buy me a coffee” बटन cdnjs.buymeacoffee.com की एक स्क्रिप्ट बनाती है और अक्षर Google Fonts से आते हैं। वह एक लिंक से ज़्यादा कुछ नहीं है। न वह आपकी विज़िट की खबर देता है, न उसे आपके या आपकी फ़ाइलों के बारे में कुछ मिलता है। जब तक आप क्लिक न करें कुछ नहीं होता, और क्लिक करने पर जो खुलेगा वह किसी और की साइट है।
- **यह ऑफ़लाइन भी चलता है।** नेटवर्क काट दीजिए, इस पेज का हर हिस्सा काम करता रहेगा। सबसे आसान सबूत यही है। जो टूल आपका GIF एनालाइज़ करने के लिए कहीं भेजता, वह प्लग निकालते ही रुक जाता।

**खुद जाँच लीजिए।** ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा `dist` ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं: https://github.com/A-Box-of-Tools/website

सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए `config/site.toml`, फ़ाइल में एक-एक ब्लॉक चलने वाले रीडर के लिए `src/gif.js`, खोलने वाले के लिए `src/lzw.js`, और बाइट का हिसाब रखने वाले के लिए `src/budget.js`। इनमें से किसी में भी ऐसी एक पंक्ति नहीं है जो नेटवर्क तक पहुँच सके।
