GIF कंप्रेस
बहुत बड़ी एनिमेटेड GIF को छोटा करें ताकि वे स्टिकर, फ़ोरम अटैचमेंट, ईमेल और तेज़ पेज लोडिंग की साइज़ सीमाओं में आ जाएँ
तीनों पहलू एक साथ
आयाम, फ़्रेम संख्या और रंग गुणवत्ता अलग-अलग समायोज्य हैं — सिर्फ़ आयाम आधे करने से ही फ़ाइल आम तौर पर लगभग एक-चौथाई रह जाती है
फ़्रेम हटाने से लय नहीं बदलती
हटाए गए फ़्रेम का समय उसके पड़ोसी फ़्रेम को मिल जाता है, इसलिए कुल अवधि और लय जस की तस रहती है — कुछ भी फ़ास्ट-फ़ॉरवर्ड नहीं होता
लोकल प्रोसेसिंग, कोई अपलोड नहीं
डिकोडिंग से री-एन्कोडिंग तक सब ब्राउज़र में होता है, इसलिए फ़ाइलें डिवाइस से बाहर नहीं जातीं और साइज़ या उपयोग की कोई सीमा नहीं है
उपयोग परिदृश्य
- WeChat के कस्टम स्टिकर GIF को 1MB और 240×240 तक सीमित रखते हैं — सीमा से बड़ी GIF कंप्रेस करते ही जोड़ी जा सकती है
- फ़ोरम और कम्युनिटी प्लेटफ़ॉर्म पर अटैचमेंट और इमेज की साइज़ सीमा होती है, और दसियों मेगाबाइट की स्क्रीन-रिकॉर्डिंग GIF अपलोड ही नहीं होती
- डॉक्युमेंटेशन, README और उत्पाद विवरण में दी गई डेमो GIF कंप्रेस होने के बाद तेज़ी से लोड होती हैं और पढ़ने वालों को नहीं अटकातीं
- ईमेल अटैचमेंट आम तौर पर 10–25MB तक सीमित होते हैं, इसलिए लंबी GIF को भेजने से पहले हल्का करना पड़ता है
GIF इतनी भारी क्यों होती हैं, और असल में क्या कंप्रेस किया जा सकता है
GIF 1987 का फ़ॉर्मैट है: हर फ़्रेम में अधिकतम 256 रंग ही हो सकते हैं और आधुनिक वीडियो जैसी फ़्रेम-दर-फ़्रेम कंप्रेशन इसमें नहीं है। इसीलिए वही दृश्य GIF में सहेजने पर अक्सर MP4 से दस गुना से भी बड़ा हो जाता है। कंप्रेस करने के लिए सिर्फ़ तीन चीज़ें बचती हैं: आयाम, फ़्रेम संख्या, और हर फ़्रेम में रंगों की संख्या।
यह टूल gifuct-js से GIF को फ़्रेम-दर-फ़्रेम डिकोड करता है (और GIF के disposal नियमों के अनुसार हर फ़्रेम को पूरी तस्वीर के रूप में पुनर्निर्मित करता है), फिर gif.js से पैलेट को दोबारा क्वांटाइज़ करके आउटपुट एन्कोड करता है। तीनों सेटिंग्स में सबसे ज़्यादा फ़ायदा आयामों से मिलता है — आधी चौड़ाई और ऊँचाई यानी एक-चौथाई पिक्सेल; इसके बाद फ़्रेम हटाना आता है; रंग गुणवत्ता से बचत अपेक्षाकृत कम है, पर तब उपयोगी है जब आप आयामों से समझौता नहीं करना चाहते। सारी गणना आपके ब्राउज़र में ही होती है।
संबंधित GIF टूल
अगर मनचाहे साइज़ तक पहुँचना वाकई मुमकिन न हो तो फ़ॉर्मैट बदलने पर विचार करें: वीडियो के रूप में एनिमेशन कहीं ज़्यादा हल्का हो जाता है — इसके लिए GIF से वीडियो का उपयोग करें। इसके उलट, किसी वीडियो से हिस्सा काटकर एनिमेशन बनाने के लिए वीडियो से GIF और कई तस्वीरों से एनिमेशन बनाने के लिए इमेज से GIF का उपयोग करें, और बनाने के बाद कंप्रेस करने के लिए इसी पेज पर लौट आएँ।
अक्सर पूछे जाने वाले प्रश्न
GIF को असल में कितना छोटा किया जा सकता है?
यह मूल फ़ाइल और सेटिंग्स पर निर्भर करता है। सबसे ज़्यादा असर आयामों का होता है: चौड़ाई और ऊँचाई आधी करने पर पिक्सेल केवल एक-चौथाई बचते हैं और फ़ाइल आम तौर पर मूल का 25%–35% रह जाती है। इसके साथ आधे फ़्रेम हटा दें तो ज़्यादातर GIF मूल साइज़ के लगभग 15% तक आ जाती हैं। यदि आयाम और फ़्रेम छुए बिना सिर्फ़ रंग गुणवत्ता घटाएँ तो बचत आम तौर पर 10%–30% रहती है।
फ़्रेम हटाने से क्या एनिमेशन तेज़ चलने लगता है?
नहीं। हटाए गए फ़्रेम का प्रदर्शन समय उससे पहले रखे गए फ़्रेम में जुड़ जाता है, इसलिए कुल अवधि और प्लेबैक गति वैसी ही रहती है — सिर्फ़ प्रवाह कम होता है। जिन GIF की फ़्रेम दर पहले से ही कम है, उनमें सभी फ़्रेम रखना बेहतर है।
GIF को स्टिकर की साइज़ सीमा के भीतर कैसे लाएँ?
उदाहरण के लिए WeChat के कस्टम स्टिकर हर फ़ाइल को 1MB और 240×240 तक सीमित रखते हैं। पहले ऐसा साइज़ विकल्प चुनें जिससे चौड़ाई और ऊँचाई 240 के भीतर आ जाएँ, फिर आधे फ़्रेम हटाएँ और रंग गुणवत्ता «संतुलित» पर ही रहने दें; कंप्रेस करने के बाद नतीजे वाले हिस्से में साइज़ देखें। अगर तब भी ज़्यादा हो तो रंग गुणवत्ता «सबसे छोटी फ़ाइल» कर दें या आयाम और घटाएँ।
कंप्रेस करने के बाद मेरी GIF बड़ी क्यों हो गई?
कुछ GIF पहले से ही बहुत आक्रामक ढंग से ऑप्टिमाइज़ होती हैं — हर फ़्रेम केवल बदले हुए बेहद छोटे हिस्से को संग्रहीत करता है — और फिर से एन्कोड करने पर हर फ़्रेम पूरी तस्वीर के रूप में लिखा जाता है, जिससे वह ऑप्टिमाइज़ेशन बेअसर हो जाता है। ऐसे में आयाम 50% या उससे कम कर दें, या आधे फ़्रेम हटा दें, साइज़ फिर से घट जाएगा।
क्या मेरी GIF फ़ाइल सर्वर पर अपलोड होगी?
नहीं। डिकोडिंग, स्केलिंग और री-एन्कोडिंग सब कुछ आपके ब्राउज़र में ही स्थानीय रूप से होता है। आपकी GIF आपके डिवाइस से बाहर नहीं जाती और कहीं अपलोड नहीं होती।
बड़ी GIF कंप्रेस करने पर क्या ब्राउज़र अटक जाएगा?
GIF कंप्रेशन हर एक फ़्रेम को डिकोड करके फिर से एन्कोड करता है, इसलिए फ़्रेम जितने ज़्यादा होंगे उतना समय लगेगा — कई सौ फ़्रेम वाली लंबी GIF फ़ोन पर काफ़ी समय ले सकती है। अगर आपका मुख्य मकसद फ़ाइल छोटी करना है तो आयाम 50% करने से प्रोसेसिंग का समय भी काफ़ी घट जाता है।