यह पेज हिन्दी में दिखाया जा रहा है, क्योंकि आपका ब्राउज़र यही भाषा माँगता है।
इस पेज का कोड चालू नहीं हुआ।
index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए तस्वीरें चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:
ऊपर फ़ाइल चुनते ही यह खुल जाएगा।तैयार — इंटरनेट काट दीजिए, यह फिर भी चलता रहेगा।इस ब्राउज़र में उपलब्ध नहीं (बाकी सब फिर भी चलता है)।ऑफ़लाइन कैश के लिए https:// या localhost चाहिए।यहाँ कैश नहीं हो सकता, पर अपलोड फिर भी कुछ नहीं होता।आपकी फ़ाइलें कहीं नहीं गईं। {total} फ़ाइलें लोड हुईं, और वे सब इसी साइट की अपनी हैं। {platform}किसी चीज़ ने {hosts} से संपर्क किया, और यह टूल ऐसा कभी नहीं करता। यह देखने लायक बात है। {platform}विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को न कोई फ़ाइल मिली, न उसका एक बाइट।विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को न कोई फ़ाइल मिली, न उसका एक बाइट।कुछ गड़बड़ हो गई: {detail}। दोबारा शुरू करने के लिए पेज फिर से लोड कीजिए।{count} फ़ाइल पढ़ी जा रही है…{count} फ़ाइलें पढ़ी जा रही हैं…कोई उदाहरण आज़माइएउदाहरण बनाया जा रहा है…यह ब्राउज़र उदाहरण नहीं बना सका। इसके बजाय कोई फ़ाइल चुनिए।
● यह टूल तस्वीरें कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।
हर फ़्रेम को आपका अपना ब्राउज़र खींचता है, क्वांटाइज़ करता है और कंप्रेस करता है, और तैयार GIF इसी मशीन की मेमोरी में जुड़ती है। यहाँ कुछ भेजना चाहता भी, तो इस पेज के दूसरी तरफ़ ऐसा कोई सर्वर ही नहीं है जिसे तस्वीर भेजी जा सके।
✗ कोई अपलोड नहीं
✗ कोई खाता नहीं
✓ ऑफ़लाइन चलता है
✓ ओपन सोर्स
✓ फ़ाइलें आपके डिवाइस पर ही रहती हैं
लाइव जाँच:जाँच जारी…
ऑफ़लाइन:जाँच जारी…
हमारी बात पर भरोसा मत कीजिए। DevTools खोलिए, Network टैब पर नज़र रखिए, और कोई 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 ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं:
सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए config/site.toml, हर फ़्रेम जिस पैलेट पर उतारा जाता है उसके लिए src/quantize.js, और कंप्रेसर तथा उसके नतीजे को सँभालने वाली फ़ाइल के लिए src/lzw.js तथा src/gif.js। इनमें से किसी में भी ऐसी एक पंक्ति नहीं है जो नेटवर्क तक पहुँच सके।
अगर आपके दफ़्तर का सुरक्षा सॉफ़्टवेयर अपलोड की चेतावनी दे। वह उस पल पर नज़र रखता है जब ब्राउज़र में फ़ाइल चुनी जाती है, और यह नहीं जान सकता कि पन्ना उसे भेजने वाला है या नहीं — इसलिए चुनने पर ही चेतावनी देता है। यहाँ से कुछ नहीं भेजा जाता: ब्राउज़र के डेवलपर टूल खोलिए, Network पर जाइए, और एक फ़ाइल चुनिए। उसे ले जाने वाला कोई अनुरोध नहीं है, और पन्ने की अपनी स्थानीय झलक के अलावा कोई अनुरोध ही नहीं। यही जाँच आपकी IT टीम आधे मिनट में कर सकती है।
1 तस्वीरें चुनिए
क्रम बदलने के लिए किसी भी फ़्रेम को उसके ⋮⋮ हैंडल से खींचिए, या हर एक पर बने तीरों का इस्तेमाल कीजिए। यहाँ का क्रम ही वह क्रम है जिसमें वे चलेंगे।
2 GIF की सेटिंग
रंग कम रंग, छोटी फ़ाइल, ज़्यादा पट्टियाँ।
डिदरिंग लोगो, लकीरों वाली कला और स्क्रीनशॉट के लिए इसे बंद कर दीजिए।
{n} फ़ाइल छोड़ी गई जो तस्वीर के रूप में पढ़ी नहीं जा सकी: {names}{n} फ़ाइलें छोड़ी गईं जो तस्वीरों के रूप में पढ़ी नहीं जा सकीं: {names}{names}…{name} का क्रम बदलने के लिए खींचिए{name} कितने सेकंड टिके{n} फ़्रेम{n} फ़्रेमआउटपुट {width} × {height}, हर तरफ़ ज़्यादा से ज़्यादा {max} px।हर फ़्रेम {width} × {height} का है।आकार आपकी तस्वीरों से आता है।फ़्रेम-दर-फ़्रेम रंग ज़्यादा टिकाऊ, और फ़ाइल छोटी। एक और चक्कर लगता है।सबसे तीखे रंग। एक ही दृश्य के फ़्रेमों के बीच बदल सकते हैं।GIF का पिक्सेल या तो पूरा पारदर्शी होता है या बिलकुल नहीं, इसलिए नरम किनारे कड़े हो जाते हैं।{width} × {height}हमेशाएक बार{n} बार{n} बारकुल {total}, करीब {fps} फ़्रेम प्रति सेकंडरंग चुने जा रहे हैं — {total} में से {done} ({percent}%){total} में से फ़्रेम {done} लिखा जा रहा है ({percent}%)GIF बनाते समय कुछ गड़बड़ हो गई।{a}, {b}{a} · {b}{n} KB{n} MB{minutes} मि {seconds} से{n} सेआपकी तस्वीरें कहीं नहीं गईं। {total} फ़ाइलें लोड हुईं। {platform}किसी चीज़ ने {hosts} से संपर्क किया, और यह टूल ऐसा कभी नहीं करता। {platform}विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को कोई फ़ाइल नहीं मिली।विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को कोई फ़ाइल नहीं मिली।
क्या इससे काम बन गया?
क्या गड़बड़ हुई?
शुक्रिया — इससे मदद मिलती है।
सिर्फ़ आपका जवाब भेजा जाता है, वह भी तभी जब आप बटन दबाते हैं। आपकी फ़ाइल, उसका नाम या उससे जुड़ी कोई बात कभी नहीं।
# 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`। इनमें से किसी में भी ऐसी एक पंक्ति नहीं है जो नेटवर्क तक पहुँच सके।
तस्वीरों से GIF कैसे बनाएँ
अपनी तस्वीरें चुनिए। पूरा फ़ोल्डर पिकर पर छोड़ दीजिए, या फ़ाइलें हाथ से चुन लीजिए। ब्राउज़र उन्हें सीधे आपकी डिस्क से पढ़ता है, और इस दौरान कुछ भी कहीं नहीं भेजा जाता।
उन्हें उसी क्रम में लगाइए जिसमें वे चलनी चाहिए। हैंडल से खींचिए, या तीरों का इस्तेमाल कीजिए। “नाम से क्रम में लगाइए” उसी तरह गिनता है जैसी आप उम्मीद करेंगे, यानी frame_2, frame_10 से पहले आता है।
तय कीजिए कि हर फ़्रेम कितनी देर रुके। हर एक के लिए आधा सेकंड स्लाइडशो बन जाता है, और बीसवाँ हिस्सा एनिमेशन। हर फ़्रेम को एक साथ वही रुकने का समय दे दीजिए, या किसी एक को अलग करके ज़्यादा देर ठहरने दीजिए।
आकार चुनिए, और यह भी कि रंग कैसे चुने जाएँ। GIF अपने क्षेत्रफल और अपने फ़्रेमों की गिनती के साथ बढ़ती जाती है, और उसे वापस नीचे लाने को क्वालिटी का कोई स्लाइडर है ही नहीं, इसलिए सबसे ज़्यादा मायने आकार ही रखता है। हर फ़्रेम के लिए 256 रंग सबसे अच्छा दिखने वाला डिफ़ॉल्ट है, और एक साझा पैलेट छोटा भी रहता है और ज़्यादा स्थिर भी।
GIF बनाइए और डाउनलोड कीजिए। यह आपके अपने हार्डवेयर पर बनती है, इसलिए कितनी देर लगेगी यह किसी कतार पर नहीं, आपकी मशीन पर निर्भर है। सहेजने से पहले तैयार एनिमेशन पेज पर चलकर दिख जाती है।
विस्तार से
तस्वीरों से चलती हुई GIF कैसे बनाएँतस्वीरों के एक सेट को एक चलती हुई GIF बनाइए: GIF असल में कितनी तेज़ चल सकती है, पैलेट वाली सेटिंग क्या बदलती है, और वे तीन चीज़ें जो सचमुच फ़ाइल को छोटा करती हैं।
नहीं। आपकी तस्वीरों को पढ़ने, खींचने, क्वांटाइज़ करने और कंप्रेस करने का काम आपका अपना ब्राउज़र आपके अपने हार्डवेयर पर करता है। इस टूल का कोई सर्वर वाला हिस्सा है ही नहीं, और पेज की 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 इतनी बड़ी क्यों है?” देखिए।
क्या यह मुफ़्त है, और क्या इसके लिए खाता बनाना पड़ेगा?
यह मुफ़्त है, और यहाँ न कोई खाता है, न साइन-इन, न ट्रायल। नतीजे पर कोई वॉटरमार्क भी नहीं होता। साइट पर विज्ञापन हैं और खर्च वही उठाते हैं, लेकिन विज्ञापनों को आपकी तस्वीरों के बारे में कुछ नहीं दिया जाता।
क्या यह ऑफ़लाइन चलता है?
हाँ। पेज एक बार लोड कर लीजिए, फिर इंटरनेट काट दीजिए, यह चलता रहेगा। कुछ अपलोड नहीं हो रहा, यह साबित करने का सबसे आसान तरीका भी यही है। जो टूल आपकी तस्वीरें प्रोसेस होने के लिए कहीं भेजता, वह प्लग निकालते ही रुक जाता।