# GIF मेकर — तस्वीरों से चलती हुई GIF

तस्वीरों के एक सेट को एक ही एनिमेशन बना दीजिए।

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

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

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

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

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

## तस्वीरों से GIF कैसे बनाएँ

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

## विस्तार से

[तस्वीरों से चलती हुई GIF कैसे बनाएँ](https://abox.tools/hi/guides/make-a-gif-from-images/): तस्वीरों के एक सेट को एक चलती हुई GIF बनाइए: GIF असल में कितनी तेज़ चल सकती है, पैलेट वाली सेटिंग क्या बदलती है, और वे तीन चीज़ें जो सचमुच फ़ाइल को छोटा करती हैं।

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

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

## सवाल

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

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

### मैं कौन-कौन से इमेज फ़ॉर्मैट इस्तेमाल कर सकता हूँ?

कोई भी स्थिर तस्वीर का फ़ॉर्मैट जिसे आपका ब्राउज़र डिकोड कर सके, यानी व्यवहार में JPG, PNG, WebP, GIF, AVIF, और Apple डिवाइसों पर HEIC भी। यहाँ अलग से कोई सूची अपडेट रखने की ज़रूरत नहीं पड़ती, क्योंकि डिकोड करना हमारा नहीं, ब्राउज़र का काम है।

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

क्योंकि GIF हर फ़्रेम को पूरे पिक्सलों के रूप में सहेजती है। यहाँ गति की कोई भरपाई नहीं होती, कुछ भी “पिछली बार जैसा ही, बस खिसका हुआ” के रूप में नहीं रखा जाता, और क्वालिटी का कोई बटन है ही नहीं। साइज़ मोटे तौर पर क्षेत्रफल गुणा फ़्रेमों की संख्या है, और उसे नीचे लाने वाली सिर्फ़ तीन चीज़ें हैं। \
\
इसे छोटा कीजिए, क्योंकि आकार आधा करने पर फ़ाइल चौथाई रह जाती है। कम फ़्रेम इस्तेमाल कीजिए, या हर एक को ज़्यादा देर रोकिए। और 64 या 32 रंगों पर उतर आइए, साथ में डिदरिंग बंद कर दीजिए, जिसकी कीमत सपाट कलाकृति पर सुनने में लगने से कम है और फ़ोटोग्राफ़ पर कहीं ज़्यादा। इसके बाद भी बात न बने, तो ईमानदार जवाब यह है कि आप जो बना रहे हैं वह वीडियो है, और उसकी MP4 शायद दसवें हिस्से की होगी।

### GIF कितनी तेज़ चल सकती है?

उतनी तेज़ नहीं जितनी संख्या से लगता है। फ़ॉर्मैट हर फ़्रेम की देरी सेकंड के सौवें हिस्सों में सहेजता है, और 1990 के दशक से ब्राउज़र दो सौवें हिस्सों से कम किसी भी देरी को सेकंड के दसवें हिस्से पर बाँध देते हैं। यह नियम उस ज़माने के घूमते ग्लोब के लिए लिखा गया था और कभी हटाया नहीं गया। इसीलिए 0.01s की देरी 100 फ़्रेम प्रति सेकंड पर नहीं चलती, 10 पर चलती है। इसी वजह से यह टूल आपको 0.02s से कम कुछ देगा ही नहीं, और 0.05s यानी 20 फ़्रेम प्रति सेकंड लगभग उतना ही तेज़ है जितना माँगना सार्थक है।

### पैलेट वाली सेटिंग क्या बदलती है?

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

### क्या मैं पारदर्शी बैकग्राउंड रख सकता हूँ?

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

### क्या मैं कितनी तस्वीरें इस्तेमाल कर सकता हूँ, इस पर कोई सीमा है?

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

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

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

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

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

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

- **आपकी तस्वीरों के जाने के लिए कोई जगह ही नहीं है।** यह पेज जिन-जिन पतों से संपर्क कर सकता है, Content-Security-Policy उन सबके नाम गिना देती है, और उनमें से एक भी इस साइट का नहीं है। यहाँ ऐसा कोई एंडपॉइंट है ही नहीं जहाँ आपकी फ़ाइलें जमा हो सकें, और होता भी तो कोड में ऐसा कुछ नहीं है जो उन्हें भेजता। कभी यहाँ `connect-src 'none'` लिखा होता था, जो पूरा-का-पूरा था। विज्ञापन जोड़ने की कीमत वही थी, और यह कह देना भी उसी सौदे का हिस्सा है।
- **एनकोडर इसी रिपॉज़िटरी की चार फ़ाइलें हैं।** GIF को एक रंग-क्वांटाइज़र और एक LZW कंप्रेसर चाहिए, और ब्राउज़र इनमें से कोई नहीं देता। इसलिए दोनों यहीं लिखे गए हैं, `src/quantize.js` और `src/lzw.js` में, और कंटेनर `src/gif.js` में। एक GIF बनाने के लिए कुछ भी बाहर से नहीं आता, और पहली बार इस्तेमाल पर कोई इंजन डाउनलोड नहीं होता।
- **Google क्या लोड करता है, और उसे क्या नहीं दिया जाता।** विज्ञापन और माप वाली स्क्रिप्ट Google से आती हैं। इनमें से किसी को भी आपकी तस्वीरों के बारे में कुछ नहीं सौंपा जाता। न फ़ाइल, न थंबनेल, न नाम, न साइज़, न गिनती। तस्वीर पढ़ने, डिकोड करने, खींचने या कंप्रेस करने वाली हर पंक्ति इसी ऑरिजिन से आती है और रिपॉज़िटरी में मौजूद है।
- **दान का बटन क्या लोड करता है, और उसे क्या नहीं दिया जाता।** हेडर में मौजूद “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/quantize.js`, और कंप्रेसर तथा उसके नतीजे को सँभालने वाली फ़ाइल के लिए `src/lzw.js` तथा `src/gif.js`। इनमें से किसी में भी ऐसी एक पंक्ति नहीं है जो नेटवर्क तक पहुँच सके।
