abox.tools

اللغة: العربية

كيف تصنع GIF متحرّكة من صور

صنعُ ملف GIF هو الجزء السهل. والحصولُ على واحد صغير بما يكفي لأن يُنشَر فعلاً هو الجزء الجدير بالقراءة، لأن ملف GIF ليس فيه مِزلاج جودة ولا يحرّك حجمه إلا ثلاثةُ أشياء.

افتح صانع GIF حوِّل طقماً من الصور إلى حركة واحدة.

عرض بصيغة Markdown

الجواب القصير

افتح صانع GIF، وأفلِت الصور فيه، ورتّبها بالترتيب الذي ينبغي أن تعمل به، واضبط كم يبقى كل إطار، ثم اصنع ملف GIF. وهو يعمل على الصفحة قبل أن تحفظه.

وكلُّ ما أدناه عن الشيئين اللذين يقعان خطأً بعد ذلك: أن يكون الملف أكبر بكثير من المتوقَّع، أو أن تعمل الحركة أبطأ مما قالت الأرقام. ولكليهما أسبابٌ بعينها ولا واحد منهما عيبٌ في الأداة.

لماذا ملف GIF أكبر بكثير مما تتوقّع

ملفُّ GIF بعشرين إطاراً وعرض 640 بكسلاً هو 8 إلى 15 ميغابايتاً عادةً. والحركةُ نفسها ملفَّ MP4 بضعُ مئات من الكيلوبايتات. وليس ذلك ملف GIF مصنوعاً رديئاً؛ بل هو ما تكونه الصيغة.

وكلُّ صيغة صور متحرّكة أخرى استعملتها تخزّن الفروق. فمرمِّزُ الفيديو يكتب إطاراً كاملاً واحداً ثم، للإطارات التي بعده، ما تحرّك وإلى أين تحرّك لا غير — ولهذا لا يكاد فيديو شخصٍ يتكلّم أمام خلفية ساكنة يكلّف شيئاً لكل إطار. وGIF لا تستطيع ذلك. فكلُّ إطار مخزَّن بكسلاتٍ كاملة، ممرَّرة في ضاغط بلا خسارة، وذلك هو الطقم كله.

ولا إعداد جودة كذلك، لأنه لا خطوة ذات خسارة تُخفَّض. فملفُّ JPEG بجودة 60% اختيارٌ حقيقي وراءه مِزلاج حقيقي؛ وGIF ليس فيها ما يعادله. فالحجمُ تقريباً هو المساحة × عدد الإطارات، والسبيلُ الوحيد إلى تحريكه تحريكُ أحد ذينك الرقمين.

الأشياء الثلاثة التي تصغّره فعلاً

بترتيب فائدتها:

1. صغِّره. وهذا ليس أحدَ خيارات عدة، بل هو الخيار. فالمقاسُ مساحةٌ، فتنصيفُ الضلع الطويل يربّع نقصان الملف: فالنزول من 640 بكسلاً إلى 320 بكسلاً يحوّل 12 ميغابايتاً إلى نحو 3 ميغابايتات. وملفُّ GIF على صفحة ويب أو في نافذة محادثة يُشاهَد ببضع مئات من البكسلات على أي حال. و480 بكسلاً هو الافتراض في الأداة لهذا السبب بالضبط، و320 بكسلاً جوابٌ محترم تماماً.

2. استعمل إطارات أقلّ. فعشرةُ إطارات مُبقاة خُمسَ ثانية لكل واحد هي الثانيتان نفساهما من الحركة التي هي عشرون إطاراً عند العُشر، ونصفُ الملف. فالسلاسةُ تكلّف بايتات بنسبة مباشرة، فأنفقها حيث تحتاجها الحركة لا غير.

3. أطفئ التوشية، وأنزِل الألوان. وهذا مخالفٌ للحدس. فالتوشيةُ تنثر نقشاً دقيقاً من بكسلات متناوبة لتزييف الألوان التي ليست في اللوحة، وذلك النقشُ ضجيج — وهو بالضبط ما لا يستطيع ضاغطٌ بلا خسارة ضغطه. وعلى العمل الفنّي المسطَّح ولقطات الشاشة والرسوم الخطّية، قد يأخذ إطفاؤها ثلث الملف ويبدو أحسن كذلك. وعلى الصور الفوتوغرافية يقايض تشرّطاً مرئياً بالتوفير، فجرّب الاثنين وانظر.

والنزولُ من 256 إلى 64 لوناً يفيد كذلك، وإن كان أقلّ مما يأمل الناس: فهو يقصّر كلمات الترميز لا يزيل بكسلات.

وإن لم يصغّره شيء من ذلك بما يكفي، فالجواب الصادق أن الذي تصنعه فيديو. وتحويلُ الصور نفسها إلى ملف MP4 سيكون نحو عُشر الحجم، وكلُّ مكان يقبل ملف GIF لشيء غير وسم <img> — ومنه كلُّ شبكة تواصل — يحوّله إلى فيديو عند الرفع على أي حال.

بأي سرعة يستطيع ملف GIF أن يعمل حقاً

الصيغة تخزّن تأخير كل إطار بأجزاء من مئة من الثانية، وذلك يوحي بأنك تستطيع طلب 0.01 ثانية فتحصل على مئة إطار في الثانية. ولا تستطيع.

فكلُّ متصفح يرفع تأخيراً دون جزأين من مئة من الثانية إلى عُشر ثانية. والقاعدة من التسعينيات، حين كانت الصفحات مملوءة بحركات مضبوطة لتعمل بأسرع ما يمكن ولم تكن أجهزة ذلك الزمن تنجو منها، وقد عمّرت بعد كل سبب أُدخِلت من أجله. ولم تُرفَع قط، وهي تنطبق على ملف GIF عندك اليوم.

فالمدى العملي:

وما دون 0.02 ثانية لا يُعرَض، لأنه رقمٌ كان سيصير 0.1 ثانية في صمت في كل متصفح موجود.

لوحة الألوان، وماذا تختار فعلاً

إطارُ GIF يحمل 256 لوناً على الأكثر. والصورةُ الفوتوغرافية فيها عشرات الآلاف. فلا بدّ لشيء أن يختار 256 منها، وذلك الاختيار هو ما يبدو به الخَرج — أكثر من أي إعداد آخر.

وتعرض الأداة طريقتين لاتخاذه:

أفضل الألوان لكل إطار يعطي كل صورة 256 خاصةً بها. وهو يبدو أحدّ، وهو الصواب لطقم صور فوتوغرافية لا رابط بينها، إذ تريد كلٌّ طقماً مختلفاً كل الاختلاف على أي حال.

ولوحة واحدة لملف GIF كله تبني جدولاً واحداً من كل الإطارات دفعة واحدة. استعملها حين تكون الإطارات متتابعة — المشهد نفسه، بفارق لحظات. فمع لوحة لكل إطار، يغيّر أيُّ تغيّر في الصورة أيَّ 256 لوناً تُختار، فتنزاح الخلفيةُ كلها في اللون قليلاً عند كل إطار. وذلك التلألؤ هو ما يجعل ملف GIF منزلي الصنع يبدو منزلي الصنع. واللوحةُ المشتركة تزيله، وتنتج ملفاً أصغر في الصفقة، لأن الجدول يُكتَب مرة لا في كل إطار.

وألوانٌ أقلّ — 128 أو 64 أو 32 — جديرةٌ بالتجربة على كل ما هو مسطَّح. فحركةُ شعار فيها ثمانية ألوان لا تفقد شيئاً عند 32، وتستطيع رؤية الفرق على صورة فوتوغرافية في الحال.

إعدادات الألوان: لوحة من 128 لونًا، واختيار بين لوحة مشتركة ولوحة لكل إطار، والتوزيع اللوني مطفأ، وملخّص للإطارات والمدة والحجم المتوقع.
اللوحة هي الإعداد الأكبر أثرًا في الحجم، وهي التي تخفيها معظم الأدوات. والملخّص تحتها يتحرك كلما غيّرتها.

الشفافية بتٌّ واحد، وتلك هي القصة كلها

بكسلُ GIF إما مطليٌّ تماماً وإما غير مرئي البتة. ولا شيء بينهما: لا ظلَّ بنسبة 50%، ولا حافّة ناعمة، ولا تلاشي.

فإن كانت صورك المصدرية تحمل شفافية، فتفعيلُها يُبقي المناطق الشفافة شفافة — لكنّ كل حافّة ملسَّنة، وهي تدرّجٌ من الشكل إلى لا شيء، تُقطَع عند نقطة المنتصف إلى حافّة حادّة مسنَّنة ظاهرةً. والأشكالُ المدوَّرة والنصُّ تعاني أشدّ المعاناة.

وإن كنت تعرف على أي لون سيجلس ملف GIF، فتسطيحُه على ذلك اللون سيبدو أحسن في كل مرة. وأبقِ الشفافية فقط حين تكون الخلفية التي سيحطّ عليها مجهولة حقاً — وإن كان الجواب «يحتاج إلى حافّة ناعمة على أي خلفية»، فالصيغةُ لذلك PNG متحرّكة أو WebP، لا GIF.

الترتيب والتوقيت وجعلُ الحلقة تستقرّ

بضعةُ أشياء معرفتُها أسرع من اكتشافها:

الترتيب بالاسم يعدّ كما ينبغي. فمتتاليةُ عرض أو تصدير تُرتَّب كما قصدت، فيحطّ frame_2 قبل frame_10 لا بعده. والترتيبُ بالتاريخ يعيد لفّة الكاميرا إلى الترتيب الذي صُوِّرت به، وهو ما تريده حين تكون أسماء الملفات قد بدأت من 0001 من جديد.

أعطِ الإطار الأخير وقتاً أطول. فالحلقةُ التي كلُّ إطاراتها بالطول نفسه تُقرأ لاهثة. وإبقاءُ الإطار الأخير نصف ثانية أو نحوها يعطي العين موضعاً تستريح فيه ويجعل الشيء كله يبدو مقصوداً. ولكل إطار مدةُ بقائه لهذا.

الحلقة ينبغي ألا تقفز. فالإطار الأخير يتبعه الأول فوراً، فإن كان هذان مختلفَين جداً قطعت الحلقةُ قطعاً. فإما أن تجعلهما متشابهين، وإما أن تتّكئ على القطع بإبقاء الإطار الأخير.

«شغّل مرة» تعني مرة. فبعض الأدوات تكتب عدد تكرار قدره واحد، ولم تتفق فاكّات الترميز عليه اتفاقاً تاماً قط — فقليلٌ منها يشغّله مرتين. واختيارُ «شغّل مرة» هنا لا يكتب معلومات تكرار البتة، وذلك تعامله كلُّ فاكّ ترميز صُنِع قط على النحو نفسه.

خمسة إطارات بالترتيب، لكل منها حقل تأخير خاص، وفوقها صف يضبط كل التأخيرات دفعة واحدة.
الترتيب والتوقيت، وكلاهما قابل للتعديل إطارًا إطارًا. أما ضبطها كلها دفعة واحدة فهو الصف الذي فوقها، وهو ما يريده كل من لديه أكثر من ثلاثة إطارات.

لماذا لا يحتاج هذا إلى خادم

صنعُ ملف GIF عملان لا يعرضهما المتصفح: اختيارُ لوحة الألوان، وضغطُ البكسلات بـ LZW. ولا واحد منهما كبير. فهما نحو أربعمئة سطر بينهما، وهما مكتوبان في المستودع، ويعملان على جهازك أنت كغيرهما هنا — ولهذا تظل الصفحة تعمل والشبكة مفصولة.

والسببُ في رفع كثير من صانعي GIF ليس أن العمل صعب. بل أن الخادم هو موضع الإعلانات والحسابات. ولا شيء في تحويل طقم صور إلى حركة يستلزم أن تغادر صورُك الغرفة التي هي فيها.

وهل رفع الملفات إلى المحوِّلات على الإنترنت آمن؟ يعرض أربعة فحوص تقول لك الشيء نفسه عن أي أداة، ومنها هذه.