# GIF फ़्रेम स्प्लिटर — हर फ़्रेम अलग PNG में

हर फ़्रेम अलग, अपनी PNG फ़ाइल में।

> किसी एनिमेटेड GIF को उसके फ़्रेम में बाँटिए और हर फ़्रेम को PNG में सहेजिए, मुफ़्त और पूरी तरह अपने ब्राउज़र में। ट्रांसपेरेंसी और टाइमिंग बनी रहती है। कुछ अपलोड नहीं होता और ऑफ़लाइन भी चलता है।

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

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

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

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

## GIF को फ़्रेम में कैसे बाँटें

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

## विस्तार से

[GIF को फ़्रेमों में कैसे बाँटें](https://abox.tools/hi/guides/split-a-gif-into-frames/): चलती GIF का हर फ़्रेम PNG में निकालिए: कुछ फ़्रेम तस्वीर का सिर्फ़ एक छोटा टुकड़ा क्यों होते हैं, पारदर्शिता का क्या होता है, और समय कैसे सँभालें ताकि सब वापस जोड़ा जा सके।

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

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

## सवाल

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

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

### एक फ़्रेम तस्वीर के छोटे से टुकड़े जैसा क्यों दिखता है?

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

### क्या ट्रांसपेरेंसी बची रहती है?

हाँ। GIF की ट्रांसपेरेंसी एक ही बिट की होती है, यानी पिक्सल या तो रंगा है या गायब है, बीच में कुछ नहीं। PNG ठीक यही सहेजता है, इसलिए फ़्रेम अपने पारदर्शी हिस्सों के साथ ही बाहर आते हैं। अगर आपको ठोस बैकग्राउंड चाहिए तो “पारदर्शी हिस्से” को किसी रंग से भरने पर लगा दीजिए। वह रंग PNG में लिख दिया जाता है और बाद में हटाया नहीं जा सकता।

### फ़्रेम की देरी वे नहीं है जो मैंने सोची थी, ऐसा क्यों?

GIF हर देरी को सेकंड के सौवें हिस्से में रखता है, और नब्बे के दशक से ब्राउज़र दो सौवें से कम किसी भी मान को उठाकर दसवाँ हिस्सा कर देते हैं। यह नियम उस ज़माने के घूमते हुए ग्लोब के लिए लिखा गया था और कभी हटाया नहीं गया। इसलिए जिस फ़्रेम की फ़ाइल में 0.01 सेकंड लिखा है, वह हर जगह 0.10 सेकंड पर चलता है। यह टूल वही देरी दिखाता है जो सचमुच चलती है, और दोनों अलग हों तो फ़ाइल में लिखा मान भी बगल में बता देता है।

### क्या फ़्रेम दोबारा जोड़े जा सकते हैं?

हाँ, इसी साइट के [GIF मेकर](https://abox.tools/hi/gif-maker/) से, या किसी भी ऐसी चीज़ से जो तस्वीरों का फ़ोल्डर लेती हो। ZIP में रखी `frames.txt` इसी के लिए है: एनिमेशन बाँटने पर टाइमिंग चली जाती है, क्योंकि PNG के पास यह लिखने की जगह ही नहीं होती कि वह कितनी देर टिका था, इसलिए यह सूची हर फ़्रेम की देरी और जगह साथ लेकर बाहर आती है।

### फ़्रेम किन फ़ॉर्मैट में सहेजे जा सकते हैं?

PNG में, और जानबूझकर सिर्फ़ PNG में। GIF के एक फ़्रेम में ज़्यादा से ज़्यादा 256 रंग और एक बिट ट्रांसपेरेंसी होती है; PNG इसे बिलकुल वैसा ही और बिना नुकसान के सहेजता है, जबकि JPEG ट्रांसपेरेंसी फेंक देता, ऐसे रंग गढ़ता जो फ़्रेम में कभी थे ही नहीं, और सपाट चित्रकारी से आम तौर पर *बड़ी* फ़ाइल बनाता। अगर JPEG चाहिए तो PNG को बाद में [इमेज रिसाइज़र](https://abox.tools/hi/resize-image/) से बदल लीजिए।

### यह कितने फ़्रेम तक पढ़ सकता है?

कोई तय सीमा नहीं है। असली छत आपके डिवाइस की मेमोरी है: पढ़े जाते समय GIF फैलकर लगभग एक बाइट प्रति पिक्सल प्रति फ़्रेम हो जाता है, इसलिए छोटी सी फ़ाइल भी बहुत बड़ी मेमोरी बन सकती है। ऐसे में यह पेज टैब को मरने देने के बजाय पढ़ना रोक देता है। ऐसा हो तो वह बता देता है और जितने फ़्रेम मिल गए थे, वे लौटा देता है।

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

आम तौर पर हाँ। अधूरे डाउनलोड, गायब अंत-चिह्न और बीच में ही रुक जाने वाला आखिरी फ़्रेम, ये सब आम बातें हैं, और जो रीडर इन्हें मना कर दे वह ठीक उन्हीं फ़ाइलों के काम नहीं आता जिन्हें लोग सबसे ज़्यादा खोलकर देखना चाहते हैं। जितने फ़्रेम पूरे हैं, वे सब वापस आते हैं, साथ में यह भी कि क्या गड़बड़ थी। सीधे मना सिर्फ़ उसी फ़ाइल को किया जाता है जो GIF है ही नहीं।

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

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

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

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

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

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

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

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