اختر ملف GIF
—
فاكُّ ترميز متصفحك نفسه، يشغّل الملف كما هو.
- الإصدار
- —
- اللوحة
- —
- حجم الملف
- —
- الإطارات
- —
- كما كُتِبت
- —
- كما تعمل
- —
- التكرارات
- —
- الألوان المرسومة
- —
ما الذي يبرز
كلُّ ما أدناه مقيسٌ من هذا الملف. ولا شيء هنا تخمينٌ لما قصدت صنعه.
أين ذهبت البايتات
كلُّ بايت من الملف في صف واحد بالضبط، والصفوف تبلغ الملف. ولو لم تبلغه لقال ذلك الصفُّ الأخير بدل أن يتمدّد الشريط في صمت ليتّسع.
الأرقام نفسها التي في الجدول أدناه، مرسومةً شريطاً واحداً.
| الجزء | البايتات | النصيب |
|---|---|---|
| الملف كله | — | 100% |
إطاراً إطاراً
الألوان
الجدول العام
الجداول الخاصة بكل إطار
ماذا فيه غير ذلك
كتلٌ لا تحمل صورة. يتخطّاها العارض كلها، وتحملها كل نسخة من الملف رغم ذلك.
جارٍ قراءة {name}… {name} ليس GIF: {why}. هذه الأداة تقرأ صيغة GIF نفسها، فليس لديها ما تقوله عن الملفات الأخرى. تعذّرت قراءة {name}: {why} الملف ينتهي عند {available} بايت، وكان يلزم {wanted} بايت أخرى عند {at} هذا الملف يبدأ بـ{what}، لا بـ«GIF» صورة JPEG صورة PNG ملف RIFF — صورة WebP أو صوت WAV ملف PDF ملف zip البايتات {bytes} حجم الرمز {size}، والصيغة تسمح بما بين 2 و8 إطار واحد {n} إطاراً لون واحد {n} لوناً مدخل واحد {n} مدخلاً جدول واحد لكل إطار {n} جدولاً لكل إطار مرة واحدة {n} مرة {n} بايت {minutes} د {seconds} ث {n} ث {time} ({fps} إطار/ث) {n} إطاراً تطلب أقل من 0.02 ث، وكل متصفح يبقيها 0.10 ث بدل ذلك. مرة واحدة — لا كتلة تكرار إلى ما لا نهاية {n} مرة مشكلة يُستحسن معرفته ملاحظة {frames}. {drawn} منها مرسومة هنا؛ والبقية أكبر من أن تُحفظ في الذاكرة دفعةً واحدة، فتُوصف من ترويساتها وحدها. {frames}، ولا واحد منها يغطي اللوحة كاملة. {frames}، وكلها تغطي اللوحة كاملة. {frames}، منها {n} تغطي اللوحة كاملة. اعرض بقية {frames} ما يخزّنه الإطار {n} وحده اللوحة بعد الإطار {n} الإطار {n} غير مرسوم التأخير {delay} → 0.10 ث المستطيل {width} × {height} عند {left}، {top} اللوحة اللونية {n} خاصة به العامة لا شيء إطلاقاً الشفافية الفهرس {n} لا الحجم {size} — {share} متشابك نعم الضغط {ratio}× خلل البيانات تنتهي مبكراً جداول هذا الملف تعلن {declared} مجتمعةً، والبكسلات تشير إلى {referenced} منها، و{different} منها مختلفة بعضها عن بعض. {entries}، {size}، تتشاركها {frames}. المداخل الباهتة هي التي لا يشير إليها أي بكسل قط. {tables} ({size} إجمالاً) الإطار {n} — {colours} تُعرض أول 24 من {n}. والباقي في التقرير القابل للتنزيل. تعليق. لا يعرضه أي عارض، وكل نسخة من الملف تحمله. كتلة التكرار، تقول بالتشغيل إلى ما لا نهاية. وهي ليست جزءاً من مواصفة GIF: اخترعتها نتسكيب سنة 1995 ونفّذها الجميع على أي حال. كتلة التكرار، تقول بالتشغيل {times}. حزمة XMP: وهي XML يكتبه محرر الصور ليسجل ما فعله. ولا شيء يرسمه. ملف تعريف ألوان ICC، يقول ما تعنيه أرقام اللوحة اللونية كألوان. ولا يكاد شيء يقرأ واحداً من داخل GIF. كتلة نص عادي، تطلب من العارض رسم نص فوق الصورة. كانت في مواصفة 1989 ولم ينفّذها شيء قط. كتلة تطبيق. والعارضات تتخطى ما لا تعرفه منها. يدوم {time} كما هو مكتوب يعرض فعلاً {time} - {n} إطاراً دون 0.02 ث يرفعها كل متصفح إلى 0.10 ث المعدل {fps} إطاراً في الثانية التكرار لا كتلة تكرار - يعرض مرة اللوحة العامة {n} لوناً لا شيء ألوان مرسومة فهرس الخلفية نُسخ. وهو نص عادي، ولم يذهب إلا إلى حافظتك. هذا المتصفح لم يسمح للصفحة بالكتابة في الحافظة. استعمل «نزّله» بدل ذلك. الترويسة ووصف الشاشة التوقيع، ومقاس اللوحة، والرايات. ثلاثة عشر بايتاً، في كل GIF صُنع قط. جدول الألوان العام {colours} لوناً بثلاثة بايتات لكل لون، تشترك فيها كل لقطة لا تأتي بجدولها الخاص. لا جدول في هذا الملف: كل لقطة تحمل لوحة ألوانها. جداول ألوان اللقطات لوحة خاصة بلقطة احتاجت ألواناً أخرى. ثلاثة بايتات للون، في كل مرة. كتل التوقيت ثمانية بايتات لكل لقطة: المهلة، وطريقة المسح، وأي لون شفاف. أوصاف اللقطات أحد عشر بايتاً لكل لقطة: أين يقع المستطيل، وما مقاسه، وحجم الرمز الذي يبدأ به الضاغط. البكسلات المضغوطة الصورة نفسها، مضغوطة بـLZW. وفي GIF سليم يكون هذا الملف كلَّه تقريباً. تأطير الكتل بايت طول لكل 255 بايتاً من البيانات، وصفر ينهي كل سلسلة. لا مفرّ منه، ويستحق أن يُرى. التعليقات والبيانات الوصفية كتل التكرار، والتعليقات، وملفات الألوان، وأي XMP خلّفه محرِّر ما. الخاتمة بايت واحد يقول إن الملف قد انتهى. بايتات بعد النهاية بيانات قابعة بعد الخاتمة. لا يقرؤها فاكّ ترميز، وهي وزن خالص. غير محسوب بايتات داخل كتل توقّف عندها هذا القارئ. والملف الذي ينتهي في منتصف كتلة يترك منها. محسوب مرتين الكتل متداخلة، وهذا يعني أن هذا الملف يناقض نفسه في أين تبدأ. غير محدَّد اتركها مكانها ارجع إلى الخلفية أعِد ما كان تحتها محجوز ({n}) المسح تحليل GIF — {name} قُرئ كله في المتصفّح بواسطة abox.tools/gif-analyzer/. ولم يُرفَع الملف. الملف الإصدار اللوحة {width} x {height} بكسل الحجم {rounded} ({exact}) اللقطات أين ذهبت البايتات المجموع ما يلفت النظر اللقطات نص يحمله الملف اللوحة العامة {colours} خاصة عامة اللوحة كاملة رقم عند مقاس مهلة مسح لوحة بايت ينتهي الملف دون بايت الختام، فهو ناقص — تنزيل توقّف مبكراً، أو ملف قُطع. البايت {at} قيمته 0x{marker}، وهي لا تبدأ أي كتلة يعرفها هذا النسق. وقد أُهمل كل ما بعدها. كتلتا تحكّم رسومي متتاليتان، عند {first} و{second}. الأولى لا تصف صورة ولا تفعل شيئاً. ينتهي الملف في وسط كتلة تبدأ عند {at}. {detail}. جاء الرمز {code} أولاً، قبل أن يحمل القاموس شيئاً. سيرسم العارض ما يستطيع ويترك بقية المستطيل فارغة. يشير الرمز {code} إلى المدخلة {code} في القاموس، ولا يوجد إلا {entries}. سيرسم العارض ما يستطيع ويترك بقية المستطيل فارغة. لا إطارات في هذا الملف. قُرئت الترويسة، لكن لم تتبعها أي كتلة صورة. مهما يكن هذا، فلن يرسم منه أي عارض شيئاً. الملف لا ينتهي نهاية نظيفة. {bytes} تقع بعد نهاية الملف. كل مفكّك يقف عند بايت الختام، فهذه لا تُقرأ ولا تُرسم أبداً. غالباً ما تكون ملفاً ثانياً أُلحق بالأول، أو برنامجاً كتب أبعد من نفسه. وقطع الملف عند بايت الختام لا يضيّع شيئاً. إطار واحد يطلب أن يبقى أقل من 0.02 ثانية، ولن يفعل ذلك أي متصفح. {count} إطارات تطلب أن تبقى أقل من 0.02 ثانية، ولن يفعل ذلك أي متصفح. كل متصفح منذ Netscape يقرّب أي تأخير دون جزأين من مئة من الثانية إلى عشرة — قاعدة كُتبت سنة 1996 لأكرة العالم الدوّارة في ذلك الزمن ولم تُرفع قط. فهذه الحركة تقول إنها تدوم {nominal} وتدوم فعلاً {real}، أي أبطأ بنحو {factor} مرة. وكتابة 0.02 بدل 0.01 تمنحها السرعة التي تطلبها. كل إطار تأخيره صفر. لا يعطي الملف أي توقيت، فسرعة العرض متروكة كلياً للعارض — عشرة إطارات في الثانية عادةً، لكن لا شيء يضمن ذلك. ويمكن لمتصفحين أن يعرضا هذا بسرعتين مختلفتين ويكون كلاهما محقاً. الإطارات غير متساوية التوقيت: {delays} تأخيرات مختلفة، من {shortest} إلى {longest}. إطار أخير يبقى أطول أمرٌ مقصود وشائع. أما تأخيرات متناثرة في الوسط فتأتي عادةً من محوّل أسقط إطارات من فيديو ومطّ ما جاورها ليسدّ الفجوة. لا توجد كتلة تكرار، فهذا يُعرض مرة واحدة ثم يقف. التكرار ليس جزءاً من مواصفة GIF. هو كتلة ابتكرها Netscape سنة 1995 ونفّذها الجميع على أي حال، والملف الخالي منها ملف يعرضه كل متصفح مرة واحدة بالضبط. فإن كان التكرار مقصوداً هنا، فقد أغفل الكتلةَ ما كتبه. يُعرض هذا مرة واحدة ثم يقف. يُعرض هذا {count} مرات ثم يقف. تذكر كتلة التكرار عدداً بدل الصفر المعتاد الذي يعني إلى الأبد. وبعض العارضات القديمة تتجاهل العدد وتكرّر بلا نهاية. كل إطار يعيد رسم اللوحة كاملة. يجوز لملف GIF أن يخزّن الإطار على أنه المستطيل الذي تغيّر عن سابقه فقط، ولهذا قد يكون تسجيل نافذة شبه ساكنة صغيراً. لا شيء هنا يفعل ذلك: كل إطار هو اللوحة كاملةً، {width}×{height}. وهذا صحيح لإطارات من صور لا رابط بينها، وهو مالٌ متروك على الطاولة لكل ما صُوّر أو سُجّل، حيث لا يتحرك معظم الصورة بين إطار وآخر. إطار واحد من {total} يعيد رسم اللوحة كاملة؛ والبقية تخزّن الجزء المتغيّر وحده. {count} إطارات من {total} تعيد رسم اللوحة كاملة؛ والبقية تخزّن الجزء المتغيّر وحده. هكذا يبدو ملف GIF محسَّن. وما يشغل اللوحة كاملةً هو عادةً الإطار الأول وكل موضع تغيّرت فيه الصورة تماماً. لا إطار يعيد رسم اللوحة كاملة. كل إطار بعد الأول يخزّن المستطيل المتغيّر وحده، وهذا هو النسق مستعملاً كما ينبغي، وهو سبب صغر هذا الملف. إطار واحد يتجاوز حدود اللوحة. {count} إطارات تتجاوز حدود اللوحة. اللوحة {width}×{height}، وإطار يطالب بمستطيل يخرج عن حافتها. والمفكِّكات مختلفة فيما تفعله بالزائد: بعضها يقصّه وبعضها يرفض الملف. اللوحة {width}×{height}، وبعض الإطارات تطالب بمستطيل يخرج عن حافتها. والمفكِّكات مختلفة فيما تفعله بالزائد: بعضها يقصّه وبعضها يرفض الملف. إطار واحد يحمل جدول ألوان خاصاً به، يكلّف {bytes} — {share} من الملف. {count} إطارات تحمل جدول ألوان خاصاً بها، يكلّف {bytes} — {share} من الملف. اللوح الخاص يتيح للإطار ألواناً لا يملكها الجدول المشترك، ويكلّف ثلاثة بايتات لكل مدخلة في كل مرة يُكتب فيها. وحين تكون الإطارات من المشهد نفسه، فجدول واحد لها جميعاً أصغر وأهدأ للعين: فاللوح الذي يتأرجح بين إطار وآخر هو بالضبط ما نسميه ارتعاش GIF. لا يوجد جدول ألوان عام. لا عيب في ذلك — فكل إطار هنا يجلب جدوله — لكنه يعني أن العارض لا يملك ما يطلي به اللوحة قبل وصول الإطار الأول. {entries} مدخلة في جداول الألوان لا تُستعمل أبداً، وهي {bytes}. تعلن جداول هذا الملف {declared} لوناً، وتشير البكسلات إلى {referenced} منها. وطول جدول الألوان قوةٌ للعدد اثنين مهما يكن فيه، فالإطار الذي يستعمل تسعة ألوان ينال ستة عشر على أي حال؛ وشيء من التقريب لا مفرّ منه. أما أكثر من ذلك بكثير فيعني أن الألواح بُنيت لصورة غير التي انتهى بها الأمر داخل الإطار. ترسم الحركة كلها بلون واحد. ترسم الحركة كلها بـ{count} لوناً. هذا رسم مسطّح، وهو ما صُمّم GIF له. ملف كهذا ينضغط جيداً ويتبعثر رديئاً، فإن بدا منقّطاً فالتبعثر هو ما ينبغي إطفاؤه. صورة فوتوغرافية، أو شيء مأخوذ منها. يمنح GIF الإطار 256 لوناً على الأكثر، فكل ما فيه تدرّج يجري تقريبه — ومن هناك يأتي التبعثر، والضجيج الذي يضخّم الملف. في هذا الملف كتلة تعليق حجمها {bytes}. لا يعرض التعليقات أي عارض، وتحملها كل نسخة من الملف. وهي عادةً اسم ما كتب الملف، وأحياناً شيء ما كان صاحبه ليختار نشره. حزمة بيانات وصفية XMP تشغل {bytes} — {share} من الملف. XMP هي كتلة XML يكتبها محرّر الصور ليسجّل ما فعله، وقد تحمل تاريخ التعديلات والبرنامج وأحياناً المؤلف. ولا يرسم منها أي عارض شيئاً. وإزالتها لا تكلّف الصورة شيئاً. ملف تعريف ألوان ICC يشغل {bytes}. يقول ملف التعريف ماذا تعني أرقام اللوح كألوان. ولا يكاد شيء يقرأ واحداً من داخل GIF، فهو غالباً وزن بلا مقابل — غير أن حذفه قد يزيح الألوان في العارضات التي تقرؤه. في هذا الملف امتداد نص صِرف. كتلة تطلب من العارض أن يرسم نصاً فوق الصورة في شبكة من الخلايا. كانت في مواصفة 1989، ولم ينفّذها شيء قط، وكل مفكّك يتخطاها. ومهما تقل، فلن يظهر منها شيء. توجد كتلة تطبيق باسم ”{name}“، حجمها {bytes}. كتل التطبيقات هي الطريق الذي يدخل منه إلى GIF كل ما هو خارج المواصفة. والعارضات تتخطى ما لا تعرفه منها، فهذه وزن ما لم يكن شيء بعينه يقرؤها. إطار واحد مخزَّن بالتشابك. {count} إطارات مخزَّنة بالتشابك. تُخزَّن الصفوف في أربع مرّات كي تُظهر الصورةُ القادمة عبر خط بطيء نسخةً خشنة من نفسها باكراً. كان لذلك معنى سنة 1993، وهو ينضغط أسوأ قليلاً من تخزين الصفوف بالترتيب، ولا يفيد أي عارض اليوم. يقول هذا الملف إنه GIF{version} لا GIF89a. جاء GIF87a أولاً، ولا كتل توقيت فيه ولا شفافية ولا كتلة تكرار. والملف الذي يدّعي 87a وهو يحمل شيئاً من ذلك شائع — فالمفكِّكات لا تتحقق — لكنه دليل على أن الترويسة نُسخت لا كُتبت. لون الخلفية هو الفهرس {index}، والجدول العام لا يحوي إلا {entries} مدخلة. لن ينهار شيء — فالعارضات تستعمل الشفاف بدلاً منه — لكن هذا يعني أن الحقل لم يُضبط قط، أو ضُبط للوح لم يعد هو اللوح الذي في الملف. نسبة أبعاد البكسل مضبوطة على {ratio}. حقل للشاشات التي لم تكن بكسلاتها مربّعة. وكل عارض حديث يتجاهله ويرسم الإطار بمقاسه المخزَّن، فالملف المعتمِد عليه يبدو ممطوطاً لمن صنعه وطبيعياً لكل من سواه. أعاد الضاغط تصفير قاموسه {count} مرة. يبني LZW قاموساً وهو ماضٍ، ويسع 4096 مدخلة؛ فإذا امتلأ بدأ المرمِّز من جديد. ومرة واحدة لكل إطار أمر طبيعي — فهكذا يبدأ الإطار. أما أكثر من ذلك فيعني أن الصورة كانت من التنوّع بحيث استنفدت القاموس في منتصف الطريق، وهذا ما تفعله الصورة الفوتوغرافية أو التبعثر الثقيل، ولهذا تكون تلك الملفات كبيرة. إطار واحد مطابق للإطار الذي قبله. {count} إطارات مطابقة للإطار الذي قبلها. تكلّف حجمها المضغوط كاملاً ولا تغيّر شيئاً على الشاشة. وإضافة تأخيرها إلى الإطار السابق بدلاً من ذلك سيبدو مطابقاً تماماً ويكون أصغر. إطار واحد لا يُفكَّك بالكامل. {count} إطارات لا تُفكَّك بالكامل. تنتهي البيانات المضغوطة قبل أن يمتلئ الإطار. سيرسم العارض ما يستطيع ويترك بقية المستطيل فارغة. صورة GIF الخاصة بك لم تذهب إلى أي مكان. {total} ملفاً حُمِّلت. {platform} اتصل شيءٌ بـ {hosts}، وهو ما لا تفعله هذه الأداة أبداً. {platform} نصوصُ الإعلانات والقياس وزرّ التبرّع الخاصة بالصفحة حُمِّلت من مضيفٍ {hosts}؛ ولم يُعطَ واحد منها ملفاً. نصوصُ الإعلانات والقياس وزرّ التبرّع الخاصة بالصفحة حُمِّلت من {hosts} مضيفاً؛ ولم يُعطَ واحد منها ملفاً.