इस पेज का कोड चालू नहीं हुआ।

index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए एक GIF चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:

powershell -ExecutionPolicy Bypass -File serve.ps1

फिर http://localhost:8080/ खोलिए।

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

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

भाषा: हिन्दी
कोड देखें
यह टूल GIF कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।

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

लाइव जाँच: जाँच जारी…

ऑफ़लाइन: जाँच जारी…

हमारी बात पर भरोसा मत कीजिए। DevTools खोलिए, Network टैब पर नज़र रखिए, और कोई GIF बाँटकर देखिए। एक भी रिक्वेस्ट में न कोई तस्वीर जाती है, न कोई फ़्रेम, न फ़ाइल का नाम। या फिर इंटरनेट काट दीजिए और तब भी एक GIF बाँटकर देखिए।

1 एक GIF चुनिए

2 फ़्रेम किस रूप में निकलें

रखिए हर सारे के बजाय हर दूसरा या हर पाँचवाँ फ़्रेम लीजिए, किसी कॉन्टैक्ट शीट के लिए या लंबी रिकॉर्डिंग के लिए।

टाइमिंग सूची हर फ़्रेम कितनी देर टिका और कहाँ बैठा था। PNG से भरा फ़ोल्डर यह अपने आप साथ नहीं ले जा सकता।

फ़्रेम

3 फ़्रेम

Markdown के रूप में देखें

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

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

विस्तार से

GIF को फ़्रेमों में कैसे बाँटें चलती GIF का हर फ़्रेम PNG में निकालिए: कुछ फ़्रेम तस्वीर का सिर्फ़ एक छोटा टुकड़ा क्यों होते हैं, पारदर्शिता का क्या होता है, और समय कैसे सँभालें ताकि सब वापस जोड़ा जा सके।

सवाल

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

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

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

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

आपको यह इसलिए दिख रहा है क्योंकि “सिर्फ़ वे पिक्सल जो यह फ़्रेम सहेजता है” चुना हुआ है। इसे “फ़्रेम जैसा दिखता है” पर कर दीजिए, फिर हर PNG उस पल की पूरी तस्वीर होगी।

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

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

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

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

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

हाँ, इसी साइट के GIF मेकर से, या किसी भी ऐसी चीज़ से जो तस्वीरों का फ़ोल्डर लेती हो। ZIP में रखी frames.txt इसी के लिए है: एनिमेशन बाँटने पर टाइमिंग चली जाती है, क्योंकि PNG के पास यह लिखने की जगह ही नहीं होती कि वह कितनी देर टिका था, इसलिए यह सूची हर फ़्रेम की देरी और जगह साथ लेकर बाहर आती है।

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

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

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

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

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

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

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

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

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

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