# تقسيم GIF — كل إطار ملفَّ PNG خاصاً به

كل إطار يخرج ملفَّ PNG خاصاً به.

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

هذه الصفحة أداة تفاعلية تعمل بالكامل داخل متصفحك، على العنوان https://abox.tools/ar/تقسيم-gif-إلى-إطارات/ — ولا يُرفَع أي شيء تعطيه إياها. وفيما يلي كل ما تقوله الصفحة عن الأداة بالكلمات؛ لاستخدامها، افتح العنوان.

## ملفات GIF الخاصة بك لا تُرفع **أبدا**. لا يوجد خادم.

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

- ✗ بلا رفع
- ✗ بلا حساب
- ✓ يعمل دون اتصال
- ✓ مفتوح المصدر
- ✓ الملفات تبقى على جهازك

## كيف تقسّم ملف GIF إلى إطارات

1. **اختر ملف GIF.** أفلِته على المُنتقي، أو اختره يدوياً. يقرؤه المتصفح من قرصك مباشرة، وتقول لك الصفحة ما وجدت: المقاس، وعدد الإطارات، وكم يعمل، وكم مرة يتكرّر.
2. **احسم ماذا يحمل كل ملف PNG.** **الإطار كما يظهر** هو ما يريده الجميع تقريباً: الصورة كلها عند تلك اللحظة من الحركة. أما **البكسلات التي يخزّنها ذلك الإطار وحدها** فهي الرقعة التي يحملها الملف فعلاً، بمقاسها هي وفي موضعها هي، وهي سبب بقاء ملف GIF صغيراً وليست منظر الحركة.
3. **احسم ماذا يحدث للشفافية.** يحفظها PNG، وهو الافتراض الصادق. واملأها بلون بدلاً من ذلك إن كانت الإطارات ذاهبة إلى مكان يتجاهل الشفافية وكان سيجعلها سوداء لولا ذلك.
4. **اختر الإطارات التي تريدها.** كلها افتراضياً. و «أبقِ إطاراً بعد إطار» يخفّف تسجيلاً طويلاً، ومربعات التأشير على الشبكة تتجاوزه — والترقيم لا يتغيّر أبداً، فالإطار 42 يُسمّى الإطار 42 مهما قلّ ما أبقيته من جيرانه.
5. **نزِّلها.** إطاراً في كل مرة من الشبكة، أو كلها في ملف ZIP واحد فتكون نافذة حفظ واحدة بدل مئات. ويستطيع ملف ZIP حمل ملف `frames.txt` يسرد كم بقي كل إطار، وهو الشيء الوحيد الذي لا يستطيع مجلد من ملفات PNG قوله وحده.

## النسخة الأطول

[كيف تقسّم ملف GIF إلى إطارات](https://abox.tools/ar/أدلة/تقسيم-gif-إلى-إطارات/): أخرِج كل إطار من صورة GIF متحرّكة ملفَّ PNG: لماذا تكون بعض الإطارات رقعةً صغيرة من الصورة لا غير، وماذا يحدث للشفافية، وكيف تحفظ التوقيت لتستطيع إعادة بنائها.

## أيضا في الصندوق

- [محلّل GIF](https://abox.tools/ar/تحليل-gif/): الإطارات والتأخيرات ولوحات الألوان، وأين ذهب كل بايت.
- [الصور إلى فيديو](https://abox.tools/ar/تحويل-الصور-إلى-فيديو/): حوِّل مجلداً من الصور إلى فيديو.
- [مقصّ الفيديو](https://abox.tools/ar/تقصير-الفيديو/): علّم على الأجزاء التي تستحق البقاء وهو يعمل. وخذها فيديو واحداً.
- [اقتصاص الفيديو](https://abox.tools/ar/اقتصاص-الفيديو/): اختصر مقطعاً إلى الجزء الذي يهمّ.

## أسئلة

### هل يُرفع ملف GIF عندي إلى أي مكان؟

لا. يقرأ متصفحك أنت الملف ويفكّ ضغطه ويرسمه على جهازك أنت، ويُرمَّز كل ملف PNG هنا في الذاكرة. ولا جانب خادمَ لهذه الأداة، و `Content-Security-Policy` الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به — وليس واحد منها لنا. اقطع الاتصال بالشبكة وسيظل يقسّم ملفات GIF.

### لماذا يبدو إطارٌ قطعةً صغيرة من الصورة؟

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

### هل يحفظ الشفافية؟

نعم. فشفافية GIF بتٌّ واحد — البكسل إما مطليّ وإما غير مرئي، ولا شيء بينهما — وPNG تخزّن ذلك بالضبط، فتخرج الإطارات ومناطقها الشفافة سليمة. وإن كنت تفضّل خلفية صمّاء، فاضبط «المناطق الشفافة» على الملء بلون؛ وذلك يُكتَب في ملف PNG ولا يمكن التراجع عنه بعدها.

### لماذا تأخيرات الإطارات ليست الأرقام التي توقّعتها؟

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

### هل أستطيع إعادة الإطارات إلى بعضها؟

نعم، بـ [صانع GIF](https://abox.tools/ar/إنشاء-gif/) على هذا الموقع أو بأي شيء آخر يقبل مجلداً من الصور. ولهذا وُجِد ملف `frames.txt` في ملف ZIP: فتقسيمُ صورة متحرّكة يرمي بالتوقيت، لأن ملف PNG ليس فيه موضع يسجّل كم بقي، فتحمل القائمة تأخير كل إطار وموضعه معها.

### بأي صيغ يمكن حفظ الإطارات؟

PNG، وPNG وحدها عن قصد. فإطار GIF 256 لوناً على الأكثر ببتّ واحد من الشفافية؛ وPNG تخزّن ذلك بالضبط وبلا خسارة، بينما كان JPEG سيرمي بالشفافية، ويخترع ألواناً لم تكن في الإطار قط، وينتج ملفاً *أكبر* عادةً من عمل فنّي مسطَّح. وإن احتجت إلى ملفات JPEG، فحوِّل ملفات PNG بعد ذلك بـ [أداة تغيير حجم الصور](https://abox.tools/ar/تغيير-حجم-الصورة/).

### هل ثمّة حدّ لعدد الإطارات التي يقرؤها؟

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

### هل يفتح ملف GIF معطوباً؟

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

### هل هو مجاني، وهل أحتاج إلى حساب؟

هو مجاني، ولا حساب ولا تسجيل دخول ولا فترة تجريبية. ولا علامة مائية على الإطارات كذلك. ويحمل الموقع إعلانات، وهي ما يدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن ملفاتك.

### هل يعمل دون اتصال؟

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

## كيف يمكن التحقق من وعد الخصوصية

- **ملف GIF عندك لا سبيل له إلى الخروج.** تُسمّي Content-Security-Policy كل عنوان يجوز لهذه الصفحة الاتصال به، وليس واحد منها لنا. فلا يوجد هنا طرفٌ تُجمَع عنده ملفاتك، ولا في الشيفرة ما يرسلها إليه لو وُجد. وقد كان هذا يقول `connect-src 'none'`، وكان مطلقاً؛ فكلّفت إضافةُ الإعلانات ذلك، وقولُه جزء من الصفقة.
- **قارئ GIF ملفان في هذا المستودع.** المتصفح يشغّل ملف GIF لكنه لا يناولك أجزاءه، فتُقرأ الصيغة هنا: `src/gif.js` هو الحاوية وفاكُّ ضغط LZW، و`src/compose.js` هو قواعد التخلّص التي تقرّر كيف يبدو كل إطار متى صار ما قبله تحته. ولا شيء يُجلَب لفتح ملف، ولا محرّك يُنزَّل عند أول استعمال.
- **ما تُحمّله Google، وما لا يُعطى لها.** نصوص الإعلانات والقياس تأتي من Google. ولا يُعطى أيٌّ منهما شيئاً عن صورتك المتحرّكة: لا ملفاً، ولا إطاراً، ولا اسماً، ولا حجماً، ولا عدداً. وكل سطر يقرأ صورة أو يفكّ ضغطها أو يرسمها أو يرمّزها يُخدَم من هذا الأصل نفسه ومُدرَج في المستودع.
- **ما يُحمّله زر التبرّع، وما لا يُعطى له.** زر «Buy me a coffee» في الترويسة يرسمه نصٌّ برمجي من cdnjs.buymeacoffee.com ويأخذ حروفه من Google Fonts. وهو رابط لا أكثر: لا يبلّغ عن زيارة، ولا يُعطى شيئاً عنك ولا عن ملفاتك. ولا يحدث شيء ما لم تنقره، والذي ستنتقل إليه بالنقر موقعُ شخص آخر.
- **يعمل دون اتصال.** اقطع الاتصال بالشبكة ويظل كل جزء من هذه الصفحة يعمل. وهذا أبسط برهان على الإطلاق: فأداةٌ ترسل صورتك المتحرّكة بعيداً لتُفكَّك كانت ستتوقف في اللحظة التي تقطع فيها الاتصال.

**تحقّق بنفسك.** لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع `dist` — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر: https://github.com/A-Box-of-Tools/website

الملفات الجديرة بالقراءة أولا هي `config/site.toml` من أجل سياسة أمان المحتوى (Content-Security-Policy)، و`src/gif.js` للقارئ الذي يفكّ ضغط الإطارات، و`src/compose.js` للقواعد التي ترصف بعضها فوق بعض — وليس في واحد منهما سطر يمكن أن يبلغ الشبكة.
