صورة متحركة GIF
تنسيق تبادل الرسومات ( GIF ؛ / ɡɪf / GHIF أو / dʒɪf / JIF ) هو تنسيق صورة نقطية تم تطويره بواسطة فريق في مزود الخدمات عبر الإنترنت CompuServe بقيادة عالم الكمبيوتر الأمريكي ستيف ويلهايت وتم إصداره في 15 يونيو 1987. [ 1 ]
يمكن أن يحتوي هذا التنسيق على ما يصل إلى 8 بتات لكل بكسل ، مما يسمح للصورة الواحدة بالرجوع إلى لوحة ألوان خاصة بها تضم ما يصل إلى 256 لونًا مختلفًا مُختارة من فضاء ألوان RGB ذي 24 بت . كما يمكنه تمثيل صور متعددة في ملف واحد، وهو ما يُمكن استخدامه في الرسوم المتحركة ، ويتيح لوحة ألوان منفصلة تضم ما يصل إلى 256 لونًا لكل إطار. هذه القيود على لوحة الألوان تجعل تنسيق GIF أقل ملاءمةً لإعادة إنتاج الصور الفوتوغرافية الملونة وغيرها من الصور ذات التدرجات اللونية ، ولكنه مناسب تمامًا للصور الأبسط مثل الرسومات أو الشعارات ذات المساحات اللونية الموحدة.
تُضغط صور GIF باستخدام تقنية ضغط البيانات غير الفاقد للبيانات Lempel-Ziv-Welch (LZW) لتقليل حجم الملف دون التأثير على جودة الصورة. ورغم شيوع استخدامها على شبكة الإنترنت العالمية نظرًا لتطبيقاتها المتعددة وسهولة نقلها بين التطبيقات وأنظمة التشغيل، فقد تراجع استخدامها لأسباب تتعلق بالمساحة والجودة، وغالبًا ما تُستبدل بصيغ أحدث مثل PNG للصور الثابتة و MP4 للفيديوهات. وفي هذا السياق، تُسمى مقاطع الفيديو القصيرة أحيانًا "GIF" رغم عدم ارتباطها بصيغة الملف الأصلية. [ 3 ]
تاريخ


أطلقت شركة CompuServe تنسيق GIF في 15 يونيو 1987 لتوفير تنسيق صور ملون لمناطق تنزيل الملفات لديها. وقد حلّ هذا التنسيق محل تنسيق ترميز طول التشغيل السابق ، الذي كان بالأبيض والأسود فقط. اكتسب تنسيق GIF شعبية واسعة بفضل استخدامه لتقنية ضغط البيانات Lempel-Ziv-Welch . ولأن هذه التقنية كانت أكثر كفاءة من ترميز طول التشغيل المستخدم في برنامجي PCX و MacPaint ، فقد أصبح بالإمكان تنزيل صور كبيرة الحجم بسرعة معقولة حتى مع أجهزة المودم البطيئة .
كان الإصدار الأصلي من GIF يسمى 87a. [ 1 ] كان هذا الإصدار يدعم بالفعل صورًا متعددة في دفق واحد.
في عام 1989، أصدرت شركة CompuServe نسخة محسنة تسمى 89a، [ 2 ] وقد أضافت هذه النسخة ما يلي:
- دعم تأخيرات الرسوم المتحركة
- ألوان خلفية شفافة
- تخزين البيانات الوصفية الخاصة بالتطبيق
- يسمح هذا الخيار بعرض النصوص كنصوص عادية (دون تضمينها في البيانات الرسومية). مع ذلك، نادراً ما يُستخدم هذا الخيار. لا تدعمه المتصفحات الحديثة، كما أن التحكم في الخطوط والتنسيق محدود للغاية.
يمكن التمييز بين الإصدارين من خلال النظر إلى أول ستة بايتات من الملف ( الرقم السحري أو التوقيع)، والتي عند تفسيرها على أنها ASCII ، تقرأ "GIF87a" أو "GIF89a" على التوالي.
شجعت شركة CompuServe على استخدام صيغة GIF من خلال توفير أدوات تحويل قابلة للتنزيل للعديد من أجهزة الكمبيوتر. فعلى سبيل المثال، بحلول ديسمبر 1987، كان بإمكان مستخدمي Apple IIGS عرض الصور التي تم إنشاؤها على Atari ST أو Commodore 64. [ 4 ] وكانت صيغة GIF واحدة من أول صيغتين للصور شائعة الاستخدام على مواقع الويب، والأخرى هي صيغة XBM بالأبيض والأسود . [ 5 ]
في سبتمبر 1995، أضاف برنامج Netscape Navigator 2.0 إمكانية تكرار صور GIF المتحركة .
رغم أن تنسيق GIF طُوّر بواسطة شركة CompuServe ، إلا أنه استخدم خوارزمية ضغط البيانات غير الفاقد للبيانات Lempel–Ziv–Welch (LZW) التي حصلت شركة Unisys على براءة اختراعها عام 1985. وقد حفّز الجدل الدائر حول اتفاقية الترخيص بين Unisys وCompuServe عام 1994 تطوير معيار رسومات الشبكة المحمولة (PNG). وفي عام 2004، انتهت صلاحية جميع براءات الاختراع المتعلقة بضغط البيانات الخاص المستخدم في تنسيق GIF.
تُستخدم ميزة تخزين صور متعددة في ملف واحد، مصحوبة ببيانات تحكم، على نطاق واسع على الويب لإنتاج رسوم متحركة بسيطة .
كما ساهمت ميزة التداخل الاختيارية ، التي تخزن خطوط مسح الصورة خارج الترتيب بطريقة تجعل حتى الصورة التي تم تنزيلها جزئيًا قابلة للتمييز إلى حد ما، في زيادة شعبية GIF، [ 6 ] حيث يمكن للمستخدم إيقاف التنزيل إذا لم يكن هو المطلوب.
في مايو 2015، أضاف فيسبوك دعمًا لملفات GIF. [ 7 ] [ 8 ] وفي عام 2014، أضاف تويتر أيضًا دعمًا لملفات GIF، وكذلك فعل إنستغرام في عام 2018. [ 9 ]
في عام 2016، أصدر أرشيف الإنترنت مكتبة قابلة للبحث تضم صور GIF من أرشيف GeoCities الخاص به . [ 10 ] [ 11 ]
مصطلحات
تُستخدم كلمة GIF كاسم في الطبعات الحديثة للعديد من القواميس. وفي عام ٢٠١٢، اعترف الفرع الأمريكي لدار نشر جامعة أكسفورد باستخدام GIF كفعل أيضًا، بمعنى "إنشاء ملف GIF"، كما في عبارة "كانت صور GIF الوسيلة الأمثل لمشاركة مشاهد من دورة الألعاب الأولمبية الصيفية ". وقد اختارها معجميو الدار كلمة العام ، مشيرين إلى أن صور GIF تطورت لتصبح "أداة ذات تطبيقات جادة، بما في ذلك البحث والصحافة". [ ١٢ ] [ ١٣ ]
نطق

كان نطق الحرف الأول من كلمة GIF موضع جدل منذ تسعينيات القرن الماضي . أكثر النطقات شيوعًا في اللغة الإنجليزية هي / dʒɪf /ⓘ ( مع حرفgخفيفكما في كلمة gin) و / ɡɪf /ⓘ (مع نطق حرفgكحرففيكلمة gift)، ويختلف فيالصوتالذي يمثله الحرفG.نطق مبتكرو هذا التنسيق اختصارGIFكـ / dʒɪf / ، مع نطق حرف gبشكل لين، وقد صرّح ويلهايت بأنه تعمّد جعل النطق يُحاكيعلامةزبدة الفول السودانيJif، وكانCompuServeيُمازحون قائلين: "المطورون المُختارون يختارون GIF"، في محاكاة ساخرة لإعلانات Jif التلفزيونية. [ 14 ] ومع ذلك، يُنطق الاسم على نطاق واسع كـ / ɡɪf / ، مع نطقgكحرف، [ 15 ] وقد أظهرت استطلاعات الرأي عمومًا أن هذا النطق بحرف g كحرف g هوالأكثر شيوعًا. [ 16 ] [ 17 ]
يذكر موقع Dictionary.com [ 18 ] كلا النطقين، مشيرًا إلى أن /dʒɪf/ هو النطق الأساسي ، بينمايقدم قاموس كامبريدج للغة الإنجليزية الأمريكية [ 19 ] نطق حرف g القوي فقط . ويذكر قاموس ميريام-ويبستر الجامعي [ 20 ] وقواميس أكسفورد كلا النطقين، لكنهما يضعان حرف g القويأولًا: / ɡɪf , dʒɪf / . [ 21 ] [ 22 ] [ 23 ] [ 24 ] وقد ذكر قاموس أكسفورد الأمريكي الجديد / dʒɪf / فقط في طبعتهالثانية [ 25 ] ، لكنه حدّثه إلى / dʒɪf , ɡɪf / في طبعته الثالثة . [ 26 ]
أثار الخلاف حول نطق كلمة GIF جدلاً واسعاً على الإنترنت. ففي حفل توزيع جوائز ويبي لعام 2013 ، بمناسبة حصوله على جائزة الإنجاز مدى الحياة ، رفض ويلهايت علنًا نطق حرف G بنطق حرف G القوي ؛ [ 15 ] [ 27 ] [ 28 ] وأدى خطابه إلى أكثر من 17000 منشور على تويتر وعشرات المقالات الإخبارية. [ 29 ] كما دخل البيت الأبيض [ 15 ] وبرنامج Jeopardy! التلفزيوني في هذا الجدل عام 2013. [ 28 ] وفي فبراير 2020، تعاونت شركة JM Smucker ، المالكة لعلامة Jif التجارية، مع قاعدة بيانات الصور المتحركة ومحرك البحث Giphy لإصدار عبوة محدودة من زبدة الفول السوداني تحمل شعار "Jif vs. GIF" ( #JIFvsGIF)، مع ملصق يُشير بأسلوب فكاهي إلى أن نطق حرف G الناعم يقتصر على زبدة الفول السوداني، بينما يُنطق GIF بنطق حرف G القوي . [ 30 ]
الاستخدام
تُعدّ صور GIF مناسبة للرسومات الخطية ذات الحواف الحادة والألوان المحدودة، مثل الشعارات. ويستفيد هذا من خاصية الضغط غير الفاقد للبيانات في هذا النوع من الصور، والتي تُفضّل المساحات المسطحة ذات اللون الموحد والحواف الواضحة. [ 31 ] كما يُمكن استخدامها لتخزين بيانات الرسوم المتحركة منخفضة الألوان للألعاب. [ 32 ] وتُستخدم صور GIF في الرسوم المتحركة القصيرة ومقاطع الفيديو منخفضة الدقة، أو كردود فعل في الرسائل الإلكترونية للتعبير عن المشاعر والأحاسيس من خلال الصور المتحركة. وهي شائعة على منصات التواصل الاجتماعي مثل Tumblr ، [ 33 ] و Facebook ، و X (المعروف سابقًا باسم Twitter). [ 34 ]
تنسيق الملف
مفهوميًا، يصف ملف GIF مساحة رسومية ثابتة الحجم (الشاشة المنطقية) تحتوي على صفر أو أكثر من الصور. تحتوي العديد من ملفات GIF على صورة واحدة تملأ الشاشة المنطقية بأكملها، بينما تقسم ملفات أخرى الشاشة المنطقية إلى صور فرعية منفصلة. قد تعمل الصور أيضًا كإطارات رسوم متحركة في ملف GIF متحرك، ولكن ليس بالضرورة أن تملأ الشاشة المنطقية بأكملها.
تبدأ ملفات GIF برأسية ثابتة الطول ("GIF87a" أو "GIF89a") تُحدد الإصدار، متبوعةً بوصف شاشة منطقي ثابت الطول يُحدد أبعاد البكسل وخصائص الشاشة المنطقية الأخرى. قد يُحدد وصف الشاشة أيضًا وجود وحجم جدول الألوان العالمي (GCT)، والذي يليه إن وُجد.
بعد ذلك، يتم تقسيم الملف إلى أجزاء من الأنواع التالية، ويتم تقديم كل جزء منها بواسطة بايت واحد كعلامة فاصلة:
- صورة (تم إدخالها بواسطة 0x2C، وهي فاصلة ASCII
',') - كتلة امتداد (تم إدخالها بواسطة 0x21، وهي علامة تعجب ASCII
'!') - المقطع الأخير (بايت واحد بقيمة 0x3B، وهو فاصلة منقوطة ASCII
';')، والذي يجب أن يكون البايت الأخير من الملف.
تبدأ الصورة بوصف صورة ثابت الطول، والذي قد يحدد وجود وحجم جدول الألوان المحلي (الذي يليه إن وجد). ثم تأتي بيانات الصورة: بايت واحد يحدد عرض البت للرموز غير المشفرة (والذي يجب أن يكون عرضه 2 بت على الأقل، حتى بالنسبة للصور ثنائية اللون)، متبوعًا بسلسلة من الكتل الفرعية التي تحتوي على البيانات المشفرة باستخدام خوارزمية LZW.
تتألف كتل الإضافة (الكتل التي "توسع" تعريف 87a عبر آلية محددة مسبقًا في مواصفات 87a) من عنصر تحكم، وبايت إضافي يحدد نوع الإضافة، وسلسلة من الكتل الفرعية التي تحتوي على بيانات الإضافة. يجب أن تسبق كتل الإضافة التي تُعدّل صورة (مثل إضافة التحكم الرسومي التي تحدد وقت تأخير الرسوم المتحركة الاختياري ولون الخلفية الشفاف الاختياري) مباشرةً المقطع الذي يحتوي على الصورة التي تشير إليها.
تبدأ كل كتلة فرعية ببايت يُحدد عدد بايتات البيانات اللاحقة في الكتلة الفرعية (من 1 إلى 255). وتنتهي سلسلة الكتل الفرعية بكتلة فرعية فارغة (بايت قيمته 0).
يُتيح هذا الهيكل تحليل الملف حتى في حال عدم فهم جميع أجزائه. قد يحتوي ملف GIF المُعَلَّم بـ 87a على كتل إضافية؛ والهدف من ذلك هو تمكين برنامج فك التشفير من قراءة الملف وعرضه دون الحاجة إلى الميزات التي تغطيها الامتدادات التي لا يفهمها.
تُغطى التفاصيل الكاملة لتنسيق الملف في مواصفات GIF. [ 2 ]
لوحات الألوان

تعتمد صيغة GIF على لوحة ألوان: تُحدد قيم RGB للألوان المستخدمة في الصورة (الإطار) في الملف ضمن جدول لوحة ألوان يتسع لـ 256 عنصرًا، وتشير بيانات الصورة إلى الألوان من خلال مؤشراتها (من 0 إلى 255) في جدول لوحة الألوان. يمكن استخلاص تعريفات الألوان في لوحة الألوان من فضاء لوني يضم ملايين الدرجات اللونية (2^ 24 درجة لونية، 8 بت لكل لون أساسي)، ولكن الحد الأقصى لعدد الألوان التي يمكن أن يستخدمها الإطار هو 256 لونًا. كان هذا القيد منطقيًا عند تطوير صيغة GIF نظرًا لندرة الأجهزة التي يمكنها عرض أكثر من 256 لونًا في وقت واحد. عادةً ما تحتاج الرسومات البسيطة، والرسومات الخطية، والرسوم المتحركة، والصور الفوتوغرافية ذات التدرج الرمادي إلى أقل من 256 لونًا.
يمكن لكل إطار أن يحدد فهرسًا واحدًا على أنه "لون خلفية شفاف": أي بكسل يتم تعيين هذا الفهرس له يأخذ لون البكسل الموجود في نفس الموضع من الخلفية، والذي ربما تم تحديده بواسطة إطار سابق من الرسوم المتحركة.
طُوِّرت العديد من التقنيات، التي تُعرف مجتمعةً باسم التمويه اللوني ، لتقريب نطاق أوسع من الألوان باستخدام لوحة ألوان صغيرة، وذلك باستخدام وحدات بكسل من لونين أو أكثر لتقريب الألوان المتوسطة. تُضحي هذه التقنيات بالدقة المكانية لتقريب دقة لونية أعلى. على الرغم من أن التمويه اللوني ليس جزءًا من مواصفات GIF، إلا أنه يُمكن استخدامه في الصور التي تُشفَّر لاحقًا كصور GIF. غالبًا ما لا يُعد هذا حلاً مثاليًا لصور GIF، وذلك لأن فقدان الدقة المكانية يجعل الصورة تبدو ضبابية على الشاشة، ولأن أنماط التمويه اللوني غالبًا ما تتداخل مع قابلية ضغط بيانات الصورة، مما يُخالف الغرض الرئيسي لتقنية GIF.
في بدايات متصفحات الويب الرسومية (1981-1987، انظر وحدة معالجة الرسومات )، كانت بطاقات الرسومات ذات مخازن مؤقتة 8 بت (تسمح بـ 256 لونًا فقط) شائعة، وكان من الشائع إنشاء صور GIF باستخدام لوحة ألوان آمنة للويب . ضمن هذا عرضًا متوقعًا، لكنه حدّ بشدة من خيارات الألوان. عندما أصبح استخدام ألوان 24 بت هو المعيار، أصبح بالإمكان ملء لوحات الألوان بالألوان المثلى لكل صورة على حدة.
قد يكفي جدول ألوان صغير للصور الصغيرة، كما أن صغر حجم جدول الألوان يُسرّع عملية تنزيل الملف. تسمح كل من مواصفات 87a و89a بجداول ألوان تحتوي على 2n لونًا ، حيث n أي قيمة من 1 إلى 8. تستطيع معظم تطبيقات الرسومات قراءة وعرض صور GIF بأي من أحجام الجداول هذه؛ إلا أن بعضها لا يدعم جميع الأحجام عند إنشاء الصور. وتُعدّ جداول الألوان التي تحتوي على 2 و16 و256 لونًا مدعومة على نطاق واسع.
ألوان حقيقية
على الرغم من أن صيغة GIF نادراً ما تُستخدم للصور ذات الألوان الحقيقية ، إلا أنه من الممكن استخدامها. [ 35 ] [ 36 ] يمكن أن تتضمن صورة GIF عدة كتل صور، لكل منها لوحة ألوان خاصة بها مكونة من 256 لونًا، ويمكن تجميع هذه الكتل لإنشاء صورة كاملة. بدلاً من ذلك، قدمت مواصفات GIF89a فكرة اللون "الشفاف"، حيث يمكن أن تتضمن كل كتلة صورة لوحة ألوان خاصة بها مكونة من 255 لونًا مرئيًا بالإضافة إلى لون شفاف واحد. يمكن إنشاء صورة كاملة عن طريق وضع كتل الصور فوق بعضها، بحيث يظهر الجزء المرئي من كل طبقة من خلال الأجزاء الشفافة من الطبقات التي تعلوها.

لعرض صورة ملونة كاملة بصيغة GIF، يجب تقسيم الصورة الأصلية إلى مناطق أصغر لا يزيد عدد ألوانها عن 255 أو 256 لونًا. تُخزَّن كل منطقة من هذه المناطق ككتلة صورة منفصلة بلوحة ألوان محلية خاصة بها، وعند عرض كتل الصور معًا (إما عن طريق التجانب أو عن طريق وضع كتل صور شفافة جزئيًا فوق بعضها)، تظهر الصورة الكاملة الملونة. على سبيل المثال، يضمن تقسيم الصورة إلى مربعات بحجم 16 × 16 بكسل (256 بكسل إجمالًا) ألا يتجاوز عدد ألوان أي مربع الحد الأقصى للوحة الألوان المحلية وهو 256 لونًا، مع العلم أنه يمكن استخدام مربعات أكبر حجمًا ودمج ألوان متشابهة، مما يؤدي إلى فقدان بعض معلومات الألوان. [ 35 ]
بما أن كل كتلة صورة يمكن أن تحتوي على جدول ألوان محلي خاص بها، فإن ملف GIF الذي يحتوي على العديد من كتل الصور قد يكون كبيرًا جدًا، مما يحد من فائدة صور GIF الملونة بالكامل. [ 36 ] إضافةً إلى ذلك، لا تتعامل جميع برامج عرض صور GIF مع الصور المُجزأة أو المُركبة بشكل صحيح. إذ تُفسر العديد من برامج العرض المُجزأة أو المُركبة على أنها إطارات رسوم متحركة وتعرضها بالتسلسل كرسوم متحركة [ 35 ] ، بينما تعرض معظم متصفحات الويب الإطارات تلقائيًا مع تأخير زمني يبلغ 0.1 ثانية أو أكثر. [ 37 ] [ 38 ]
مثال على ملف GIF
| يحفظ برنامج الرسام (Microsoft Paint) صورة صغيرة بالأبيض والأسود كملف GIF كما هو موضح أدناه (مكبّر). لا يستغل الرسام صيغة GIF بالشكل الأمثل؛ فبسبب حجم جدول الألوان الكبير غير الضروري (حيث يخزن 256 لونًا كاملًا بدلًا من اللونين المستخدمين) وعرض الرمز، لا يُعد ملف GIF هذا تمثيلًا فعالًا للصورة ذات الـ 15 بكسل. على الرغم من أن كتلة امتداد التحكم الرسومي تُعرّف فهرس اللون 16 (السداسي عشري 10) على أنه شفاف، إلا أن هذا الفهرس غير مستخدم في الصورة. فهرسا اللون الوحيدان الظاهران في بيانات الصورة هما العشريان 40 و255، واللذان يُقابلهما جدول الألوان العام باللونين الأسود والأبيض على التوالي. | صورة نموذجية (مكبرة)، الحجم الفعلي 3 بكسل عرضًا × 5 بكسل ارتفاعًا |
الأرقام السداسية العشرية في الجداول التالية مرتبة حسب ترتيب البايتات الصغير ، كما هو منصوص عليه في مواصفات التنسيق.
| بايت (سداسي عشري) | النظام الست عشري | نص أو قيمة | معنى | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 47 49 46 38 39 61 | GIF89a | رأس الصفحة | |||||||
| واصف الشاشة المنطقية | ||||||||||
| 6 | 03 00 | 3 | عرض الشاشة المنطقي | |||||||
| 8 | 05 00 | 5 | ارتفاع الشاشة المنطقي | |||||||
| أ | F7 | يُستخدم ترميز GCT لـ 256 لونًا بدقة 3 × 8 بت/لون أساسي، حيث تمثل البتات الثلاثة الأدنى عمق البت ناقص 1، بينما يشير البت الأعلى إلى وجود ترميز GCT. | ||||||||
| ب | ٠٠ | 0 | لون الخلفية: فهرس 0؛ 000000 أسود | |||||||
| ج | ٠٠ | 0 | نسبة العرض إلى الارتفاع الافتراضية للبكسل، 0:0 | |||||||
| جدول الألوان العالمي | ||||||||||
| د | ٠٠ ٠٠ ٠٠ |
| جدول الألوان العالمي، اللون رقم 0: رقم 000000، أسود | |||||||
| 10 | 80 00 00 |
| جدول الألوان العالمي، اللون رقم 1: بت شفاف، غير مستخدم في الصورة | |||||||
| ... | ... | ... | يمتد جدول الألوان العالمي إلى 30 أمبير | |||||||
| 30A | FF FF FF |
| جدول الألوان العالمي، اللون رقم 255: #ffffff، أبيض | |||||||
| ملحق التحكم الرسومي | ||||||||||
| 30D | 21 | '!' | كتلة إضافية (يتم إدخالها بواسطة علامة تعجب ASCII '!') | |||||||
| 30E | F9 | ملحق للتحكم الرسومي | ||||||||
| 30 فهرنهايت | 04 | 4 | حجم بيانات GCE، 4 بايت | |||||||
| 310 | 01 | لون خلفية شفاف؛ هذا حقل بت، يشير البت الأدنى إلى الشفافية | ||||||||
| 311 | ٠٠ ٠٠ | تأخير الرسوم المتحركة بأجزاء من مئة من الثانية؛ غير مستخدم | ||||||||
| 313 | 10 | 16 | رقم لون البكسل الشفاف في GCT | |||||||
| 314 | ٠٠ | نهاية وحدة GCE | ||||||||
| وصف الصورة | ||||||||||
| 315 | 2C | ',' | مُعرِّف الصورة (الذي تم تقديمه بواسطة 0x2C، وهي فاصلة ASCII ',') | |||||||
| 316 | ٠٠ ٠٠ ٠٠ ٠٠ | (0, 0) | موضع الصورة في الزاوية الشمالية الغربية للشاشة المنطقية | |||||||
| 31أ | 03 00 05 00 | (3، 5) | عرض الصورة وارتفاعها بالبكسل | |||||||
| 31E | ٠٠ | 0 | بت جدول الألوان المحلي، 0 يعني لا شيء | |||||||
| بيانات الصورة | ||||||||||
| 31 فهرنهايت | 08 | 8 | بداية الصورة، الحد الأدنى لحجم رمز LZW | |||||||
| 320 | 0B | 11 | بداية أول كتلة فرعية من البيانات، تحدد 11 بايت من البيانات المشفرة التي ستليها | |||||||
| 321 | 00 51 FC 1B 28 70 A0 C1 83 01 01 | <بيانات الصورة> | 11 بايت من بيانات الصورة، انظر الحقل 320 | |||||||
| 32 درجة مئوية | ٠٠ | 0 | إنهاء كتلة البيانات الفرعية، مع تحديد عدم وجود بايتات بيانات لاحقة (ونهاية الصورة) | |||||||
| جَرَّار | ||||||||||
| 32D | 3ب | ';' | مؤشر إنهاء كتلة الملف (فاصلة منقوطة ASCII ';') | |||||||
ترميز الصور
تُحوّل بيانات بكسل الصورة، الممسوحة ضوئيًا أفقيًا من أعلى اليسار، باستخدام ترميز LZW إلى رموز تُخزّن بعد ذلك في بايتات داخل الملف. لا تتطابق رموز البكسل عادةً مع حجم البايتات البالغ 8 بت، لذا تُعبأ الرموز في بايتات باستخدام نظام "ليتل إنديان": يُخزّن البت الأقل أهمية من الرمز الأول في البت الأقل أهمية من البايت الأول، وتُخزّن البتات ذات الرتب الأعلى من الرمز في البتات ذات الرتب الأعلى من البايت، مع إمكانية استخدام البتات ذات الرتب الأدنى من البايت التالي عند الحاجة. يُخزّن كل رمز لاحق بدءًا من البت الأقل أهمية غير المستخدم.
يُخزَّن هذا التدفق البايتي في الملف على شكل سلسلة من "الكتل الفرعية". يبلغ الحد الأقصى لطول كل كتلة فرعية 255 بايت، ويُسبق كل منها ببايت يُشير إلى عدد بايتات البيانات فيها. وتنتهي سلسلة الكتل الفرعية بكتلة فرعية فارغة (بايت واحد قيمته 0، يُشير إلى كتلة فرعية تحتوي على 0 بايت من البيانات).
بالنسبة للصورة النموذجية أعلاه، يظهر أدناه الربط العكسي بين الرموز المكونة من 9 بتات والبايتات.
| رمز 9 بت | بايت | ||
|---|---|---|---|
| النظام الست عشري | ثنائي | ثنائي | النظام الست عشري |
| 100 | 1 00000000 | 00000000 | ٠٠ |
| 028 | 00 0101000 | 0101000 1 | 51 |
| 0FF | ٠١١ ١١١١١١ | 111111 00 | نادي كرة القدم |
| 103 | 1000 00011 | ٠٠٠١١ ٠١١ | 1ب |
| 102 | 10000 0010 | ٠٠١٠ ١٠٠٠ | 28 |
| 103 | 100000 011 | 011 10000 | 70 |
| 106 | 1000001 10 | 10 100000 | A0 |
| 107 | 10000011 1 | 1 1000001 | ج1 |
| 10000011 | 83 | ||
| 101 | 1 00000001 | 00000001 | 01 |
| 0000000 1 | 01 | ||
يُلاحظ ضغط طفيف: ألوان البكسل المُعرّفة مبدئيًا بـ 15 بايتًا تُمثَّل بدقة بـ 12 بايتًا من التعليمات البرمجية، بما في ذلك رموز التحكم. تُوضَّح أدناه عملية التشفير التي تُنتج رموزًا من 9 بتات. يُجمِّع نصٌ محلي أرقام ألوان البكسل من لوحة الألوان، دون أي عملية إخراج، طالما وُجد هذا النص في جدول التعليمات البرمجية. تُعامل أول بكسلين يصلان قبل أن ينمو الجدول من حجمه الأولي بإضافة نصوص برمجية، معاملةً خاصة. بعد كل رمز إخراج، يُعاد تهيئة النص المحلي إلى آخر لون بكسل (لم يُضمَّن في رمز الإخراج).
جدول سلسلة 9 بت --> رمز رمز الإجراء #0 | 000h تهيئة جدول الجذر لرموز 9 بت لوحة الألوان | : الألوان | : #255 | 0FFh شفاف | 100 ساعة نهاية | 101 ساعة | 100 ساعة واضحة بكسل محلي | سلسلة لوحة الألوان | أسود #40 28 | 028h البكسل الأول دائمًا للإخراج أبيض #255 FF | تم العثور على السلسلة في الجدول 28 FF | 102h أضف دائمًا السلسلة الأولى إلى الجدول FF | تهيئة السلسلة المحلية أبيض #255 FF FF | لم يتم العثور على السلسلة في الجدول | 0FFh - رمز الإخراج للسلسلة السابقة FF FF | 103 ساعة - إضافة أحدث سلسلة نصية إلى الجدول FF | - تهيئة سلسلة محلية أبيض #255 FF FF | تم العثور على السلسلة في الجدول أسود #40 FF FF 28 | لم يتم العثور على السلسلة في الجدول | 103h - رمز الإخراج للسلسلة السابقة FF FF 28 | 104 ساعة - إضافة أحدث سلسلة نصية إلى الجدول 28 | - تهيئة سلسلة نصية محلية أبيض #255 28 FF | تم العثور على السلسلة في الجدول أبيض #255 28 FF FF | لم يتم العثور على السلسلة في الجدول | 102h - رمز الإخراج للسلسلة السابقة 28 FF FF | 105 ساعة - إضافة السلسلة الأخيرة إلى الجدول FF | - تهيئة سلسلة محلية أبيض #255 FF FF | تم العثور على السلسلة في الجدول أبيض #255 FF FF FF | لم يتم العثور على السلسلة في الجدول | 103h - رمز الإخراج للسلسلة السابقة FF FF FF | 106 ساعة - إضافة آخر سلسلة نصية إلى الجدول FF | - تهيئة سلسلة محلية أبيض #255 FF FF | تم العثور على السلسلة في الجدول أبيض #255 FF FF FF | تم العثور على السلسلة في الجدول أبيض #255 FF FF FF FF | لم يتم العثور على السلسلة في الجدول | 106h - رمز الإخراج للسلسلة السابقة FF FF FF FF| 107 ساعة - إضافة آخر سلسلة نصية إلى الجدول FF | - تهيئة سلسلة محلية أبيض #255 FF FF | تم العثور على السلسلة في الجدول أبيض #255 FF FF FF | تم العثور على السلسلة في الجدول أبيض #255 FF FF FF FF | تم العثور على السلسلة في الجدول لا مزيد من البكسلات 107h - رمز الإخراج للسلسلة الأخيرة نهاية 101 ساعة
للتوضيح، يظهر الجدول أعلاه مُكوَّنًا من سلاسل نصية متزايدة الطول. هذه الطريقة فعّالة، لكن الجدول يستهلك كمية غير متوقعة من الذاكرة. يمكن توفير الذاكرة عمليًا بملاحظة أن كل سلسلة نصية جديدة تُخزَّن تتكون من سلسلة نصية مُخزَّنة سابقًا مُضافًا إليها حرف واحد. من المُجدي تخزين كلمتين فقط في كل عنوان: عنوان موجود وحرف واحد.
تتطلب خوارزمية LZW البحث في الجدول لكل بكسل. سيؤدي البحث الخطي عبر ما يصل إلى 4096 عنوانًا إلى إبطاء عملية الترميز. عمليًا، يمكن تخزين الرموز بترتيب قيمها العددية؛ مما يسمح بإجراء كل عملية بحث بواسطة مسجل التقريب المتتالي (SAR، كما هو مستخدم في بعض محولات التناظرية إلى الرقمية)، مع 12 مقارنة فقط للمقدار. لتحقيق هذه الكفاءة، يلزم جدول إضافي للتحويل بين الرموز وعناوين الذاكرة الفعلية؛ ولا يلزم تحديث هذا الجدول الإضافي إلا عند تخزين رمز جديد، وهو ما يحدث بمعدل أقل بكثير من معدل البكسل.
فك تشفير الصور
تبدأ عملية فك التشفير بإعادة ربط البايتات المخزنة برموز مكونة من 9 بتات. يتم فك تشفير هذه الرموز لاستعادة ألوان البكسل كما هو موضح أدناه. يتم إنشاء جدول مطابق للجدول المستخدم في المُشفِّر عن طريق إضافة السلاسل النصية وفقًا لهذه القاعدة:
| نعم | أضف سلسلة نصية للتعليمات البرمجية المحلية، متبوعة بالبايت الأول من سلسلة التعليمات البرمجية الواردة. |
| لا | أضف سلسلة للتعليمات البرمجية المحلية متبوعة بنسخة من البايت الأول الخاص بها |
تحويل 9 بت ----> جدول محلي رمز البكسل رمز الرمز --> سلسلة لون لوحة الألوان الإجراء 100h 000h | #0 تهيئة جدول الجذر لرموز 9 بت : | لوحة الألوان : | ألوان 0FFh | #255 100 ساعة | شفاف 101 ساعة | نهاية 028h | #40 أسود فك تشفير البكسل الأول 0FFh 028h | تم العثور على الرمز الوارد في الجدول | #255 أبيض - سلسلة الإخراج من الجدول 102 ساعة | 28 FF - أضف إلى الجدول 103h 0FFh | لم يتم العثور على الرمز الوارد في الجدول 103 ساعة | FF FF - أضف إلى الجدول | - إخراج السلسلة من الجدول | أبيض رقم 255 | أبيض رقم 255 102 ساعة 103 ساعة | تم العثور على الرمز الوارد في الجدول | - إخراج السلسلة من الجدول | #40 أسود | #255 أبيض 104 ساعة | FF FF 28 - أضف إلى الجدول 103 ساعة 102 ساعة | تم العثور على الرمز الوارد في الجدول | - إخراج السلسلة من الجدول | أبيض رقم 255 | أبيض رقم 255 105 ساعة | 28 FF FF - أضف إلى الجدول 106 ساعة 103 ساعة | لم يتم العثور على الرمز الوارد في الجدول 106 ساعة | FF FF FF - أضف إلى الجدول | - إخراج السلسلة من الجدول | أبيض رقم 255 | أبيض رقم 255 | أبيض رقم 255 107 ساعة 106 ساعة | لم يتم العثور على الرمز الوارد في الجدول 107 ساعة | FF FF FF FF - أضف إلى الجدول | - إخراج السلسلة من الجدول | أبيض رقم 255 | أبيض رقم 255 | أبيض رقم 255 | أبيض رقم 255 101 ساعة | نهاية
أطوال رمز LZW
يمكن استخدام أطوال رموز أقصر للوحات ألوان أصغر من 256 لونًا في المثال. فإذا كانت لوحة الألوان تحتوي على 64 لونًا فقط (أي أن عرض فهارس الألوان 6 بتات)، يمكن أن تتراوح الرموز من 0 إلى 63، ويمكن اعتبار عرض الرمز 6 بتات، مع بدء الرموز من 7 بتات. في الواقع، لا يشترط أن يتطابق عرض الرمز مع حجم لوحة الألوان: طالما أن القيم المُفكَّكة أقل دائمًا من عدد الألوان في لوحة الألوان، يمكن أن يكون عرض الرموز أي قيمة من 2 إلى 8، وحجم لوحة الألوان أي قوة من قوى العدد 2 من 2 إلى 256. على سبيل المثال، إذا استُخدمت الألوان الأربعة الأولى فقط (القيم من 0 إلى 3) من لوحة الألوان، يمكن اعتبار عرض الرموز 2 بتات مع بدء الرموز من 3 بتات.
في المقابل، يمكن ضبط عرض الرمز على 8، حتى لو تم استخدام القيمتين 0 و1 فقط؛ إذ لا تتطلب هذه البيانات سوى جدول ثنائي اللون. مع أنه لا جدوى من ترميز الملف بهذه الطريقة، إلا أن شيئًا مشابهًا يحدث عادةً مع الصور ثنائية اللون: الحد الأدنى لعرض الرمز هو 2، حتى لو تم استخدام القيمتين 0 و1 فقط.
يحتوي جدول الترميز مبدئيًا على رموز أطول بت واحد من حجم الرمز لاستيعاب الرمزين الخاصين clr و end ، بالإضافة إلى رموز السلاسل النصية التي تُضاف أثناء العملية. عندما يمتلئ الجدول، يزداد طول الرمز لإفساح المجال لمزيد من السلاسل النصية، حتى يصل إلى رمز أقصى قدره 4095 = FFF (سداسي عشري). أثناء قيام وحدة فك التشفير ببناء جدولها، فإنها تتعقب هذه الزيادات في طول الرمز، وتتمكن من فك تشفير البايتات الواردة وفقًا لذلك.
صورة GIF غير مضغوطة
صورة GIF غير مضغوطة بحجم 46×46 بكسل، تحتوي على رموز 7 بت (128 لونًا، رموز 8 بت). انقر على الصورة للاطلاع على شرح الرمز. |
يمكن تعديل عملية ترميز GIF لإنشاء ملف بدون ضغط LZW مع الحفاظ على إمكانية عرضه كصورة GIF. طُرحت هذه التقنية في الأصل كوسيلة لتجنب انتهاك براءات الاختراع. كما يُعدّ ملف GIF غير المضغوط صيغة وسيطة مفيدة لمبرمجي الرسومات، إذ يُمكن الوصول إلى وحدات البكسل الفردية لقراءتها أو رسمها. يُمكن تحويل ملف GIF غير المضغوط إلى ملف GIF عادي ببساطة عن طريق معالجته في برنامج تحرير الصور.
تتجاهل طريقة التشفير المُعدّلة إنشاء جدول LZW، وتُصدر فقط رموز لوحة الألوان الأساسية ورموز CLEAR وSTOP. ينتج عن ذلك تشفير أبسط (تطابق تام بين قيم الرموز ورموز لوحة الألوان)، ولكنه يُضحي بجميع مزايا الضغط: إذ يُولّد كل بكسل في الصورة رمز إخراج يُشير إلى فهرس لونه. عند معالجة ملف GIF غير مضغوط، لن يُمنع مُفكِّك تشفير GIF القياسي من كتابة سلاسل نصية إلى جدول القاموس الخاص به، ولكن يجب ألا يزيد عرض الرمز أبدًا، لأن ذلك يُؤدي إلى تغيير في عملية تجميع البتات إلى بايتات.
إذا كان عرض الرمز n ، فإن الرموز ذات العرض n + 1 تنقسم تلقائيًا إلى مجموعتين: المجموعة السفلية التي تضم 2n رمزًا لترميز الرموز المفردة ، والمجموعة العلوية التي تضم 2n رمزًا والتي سيستخدمها المُفكِّك لتسلسلات يزيد طولها عن واحد. من المجموعة العلوية، الرمزان الأولان مستخدمان بالفعل: 2n لـ CLEAR و 2 n + 1 لـ STOP. يجب أيضًا منع المُفكِّك من استخدام الرمز الأخير في المجموعة العلوية، 2n + 1 - 1 ، لأنه عند ملء هذا الموضع، سيزداد عرض الرمز. بالتالي، في المجموعة العلوية k، يوجد 2n - 3 رموز متاحة للمُفكِّك لا تؤدي إلى زيادة في عرض الرمز. ولأن المُفكِّك دائمًا متأخر بخطوة واحدة في تحديث الجدول، فإنه لا يُنشئ مدخلًا في الجدول عند استلام الرمز الأول من المُشفِّر، ولكنه يُنشئ مدخلًا لكل رمز لاحق. وبالتالي، يستطيع المُشفِّر توليد 2n -2 رمزًا دون زيادة عرض الرمز. لذلك، يجب على المُشفِّر إصدار رموز CLEAR إضافية على فترات لا تتجاوز 2n -2 رمزًا لإعادة ضبط قاموس الترميز بواسطة المُفكِّك. يسمح معيار GIF بإدراج هذه الرموز الإضافية في بيانات الصورة في أي وقت. يتم تقسيم دفق البيانات المُركَّب إلى كتل فرعية، تحمل كل منها من 1 إلى 255 بايتًا .
بالنسبة للصورة النموذجية 3×5 أعلاه، تمثل الرموز المكونة من 9 بتات التالية "واضح" (100) متبوعة بوحدات البكسل في الصورة بترتيب المسح و"توقف" (101).
100 028 0FF 0FF 0FF 028 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 101
بعد تحويل الرموز المذكورة أعلاه إلى بايتات، يختلف الملف غير المضغوط عن الملف المضغوط، على النحو التالي:
| بايت (سداسي عشري) | النظام الست عشري | نص أو قيمة | معنى |
|---|---|---|---|
| 320 | 14 | 20 | بيانات الصورة غير المضغوطة بحجم 20 بايت تلي |
| 321 | 00 51 FC FB F7 0F C5 BF 7F FF FE FD FB F7 EF DF BF 7F 01 01 | ||
| 335 | ٠٠ | 0 | نهاية بيانات الصورة |
مثال على الضغط
يوضح المثال البسيط لصورة كبيرة ذات لون ثابت ضغط LZW ذو الطول المتغير المستخدم في ملفات GIF.
| شفرة | بكسلات | ملحوظات | |||
|---|---|---|---|---|---|
| لا.ني | قيمةN i + 256 | طول(أجزاء) | هذا الكودني | متراكمNi ( N i + 1 ) / 2 | لا تنطبق العلاقات التي تستخدم N i إلا على وحدات البكسل ذات اللون نفسه حتى يمتلئ جدول الترميز. |
| 0 | 100 ساعة | 9 | يوم إزالة الرموز | ||
| 1 | FFh | 1 | 1 | تم اختيار لون البكسل العلوي الأيسر كأعلى فهرس في لوحة ألوان مكونة من 256 لونًا. | |
| 2 | 102 ساعة | 2 | 3 | ||
| 3⋮255 | 103 ساعة⋮1FFh | 3⋮255 | 6⋮32640 | آخر 9 بتات من الرمز | |
| 256⋮767 | 200 ساعة⋮3FFh | 10 | 256⋮767 | 32896⋮294528 | آخر 10 بتات من الرمز |
| 768⋮1791 | 400 ساعة⋮7FFh | 11 | 768⋮1791 | 295296⋮1604736 | آخر 11 بت من الرمز |
| 1792⋮3839 | 800 ساعة⋮FFFh | 12 | 1792⋮3839 | 1606528⋮7370880 | جدول الرموز كامل |
| ⋮ | FFFh | 3839 | قد يتكرر الحد الأقصى للرمز لعدد أكبر من وحدات البكسل ذات اللون نفسه.يقترب معدل ضغط البيانات الإجمالي بشكل تقاربي من 3839 × 8 / 12 = 2559 + 1 / 3 | ||
| 101 ساعة | نهاية بيانات الصورة | ||||
تُجمّع قيم الترميز المعروضة في بايتات، ثم تُجمّع هذه البايتات في كتل يصل حجمها إلى 255 بايتًا. تبدأ كتلة بيانات الصورة ببايت يُحدد عدد البايتات التي تليها. وتُعلّم الكتلة الأخيرة من بيانات الصورة ببايت طوله صفر.
التشابك

تسمح مواصفات GIF لكل صورة ضمن الشاشة المنطقية لملف GIF بتحديد أنها متداخلة؛ أي أن ترتيب خطوط الصورة النقطية في كتلة بياناتها ليس متسلسلاً. وهذا يسمح بعرض جزئي للصورة يمكن التعرف عليه قبل عرض الصورة كاملة.
يتم تقسيم الصورة المتداخلة من الأعلى إلى الأسفل إلى شرائح بارتفاع 8 بكسل، ويتم عرض صفوف الصورة بالترتيب التالي:
- المرحلة 1: السطر 0 (السطر العلوي) من كل شريط.
- المرحلة الثانية: السطر 4 من كل شريط.
- المرحلة الثالثة: السطران 2 و 6 من كل شريط.
- المرحلة الرابعة: الأسطر 1 و3 و5 و7 من كل شريط.
لا تتداخل وحدات البكسل داخل كل سطر، بل تُعرض بالتتابع من اليسار إلى اليمين. وكما هو الحال في الصور غير المتداخلة، لا يوجد فاصل بين بيانات سطر وبيانات السطر التالي. ويتم تحديد مؤشر تداخل الصورة عن طريق بت مُعيّن في كتلة وصف الصورة المقابلة.
صورة متحركة بصيغة GIF

على الرغم من أن تنسيق GIF لم يُصمم في الأصل كوسيلة لعرض الرسوم المتحركة، إلا أن قدرته على تخزين صور متعددة في ملف واحد أوحت باستخدامه لتخزين إطارات سلسلة الرسوم المتحركة. ولتسهيل عرض الرسوم المتحركة، أضافت مواصفات GIF89a امتداد التحكم الرسومي (GCE)، الذي يسمح برسم الصور (الإطارات) في الملف مع تأخيرات زمنية، لتشكيل مقطع فيديو . يُقدّم كل إطار في ملف GIF للرسوم المتحركة بواسطة امتداد GCE خاص به، يحدد التأخير الزمني المطلوب بعد رسم الإطار. تُطبّق المعلومات العامة في بداية الملف افتراضيًا على جميع الإطارات. البيانات مُوجّهة نحو التدفق، لذا يعتمد إزاحة الملف لبداية كل امتداد GCE على طول البيانات السابقة. داخل كل إطار، تُرتّب بيانات الصورة المُشفّرة باستخدام LZW في كتل فرعية يصل حجمها إلى 255 بايت؛ ويُحدّد حجم كل كتلة فرعية بواسطة البايت الذي يسبقها.
افتراضيًا، يعرض الرسم المتحرك سلسلة الإطارات مرة واحدة فقط، ويتوقف عند عرض الإطار الأخير. ولتمكين تكرار الرسم المتحرك، استخدمت نتسكيب في التسعينيات كتلة امتداد التطبيق (التي تهدف إلى السماح للموردين بإضافة معلومات خاصة بالتطبيق إلى ملف GIF) لتنفيذ كتلة تطبيق نتسكيب (NAB). [ 39 ] تحدد هذه الكتلة، الموضوعة مباشرةً قبل سلسلة إطارات الرسم المتحرك، عدد مرات تشغيل سلسلة الإطارات (من 1 إلى 65535 مرة) أو ما إذا كان ينبغي تكرارها باستمرار (الصفر يعني التكرار إلى الأبد). ظهر دعم هذه الرسوم المتحركة المتكررة لأول مرة في نتسكيب نافيجاتور الإصدار 2.0، ثم انتشر إلى متصفحات أخرى. [ 40 ] تتعرف معظم المتصفحات الآن على NAB وتدعمها، على الرغم من أنها ليست جزءًا أساسيًا من مواصفات GIF89a.
يوضح المثال التالي بنية ملف الرسوم المتحركة Rotating earth (large).gif المعروض (كصورة مصغرة) في مربع معلومات المقالة.
| بايت (سداسي عشري) | النظام الست عشري | نص أو قيمة | معنى |
|---|---|---|---|
| 0 | 47 49 46 38 39 61 | GIF89a | واصف الشاشة المنطقية |
| 6 | 90 01 | 400 | العرض بالبكسل |
| 8 | 90 01 | 400 | الارتفاع بالبكسل |
| أ | F7 | يتبع ذلك نظام GCT لـ 256 لونًا بدقة 3 × 8 بت/لون أساسي | |
| ب | ٠٠ | 0 | لون الخلفية: أسود |
| ج | ٠٠ | 0 | نسبة العرض إلى الارتفاع الافتراضية للبكسل، 0:0 |
| د | ٠٠ | جدول الألوان العالمي | |
| ⋮ | |||
| 30D | 21 | '!' | كتلة إضافية (يتم إدخالها بواسطة علامة تعجب ASCII '!') |
| 30E | FF | امتداد التطبيق | |
| 30 فهرنهايت | 0B | 11 | حجم الكتلة بما في ذلك اسم التطبيق وبايتات التحقق (دائماً 11) |
| 310 | 4هـ 45 54 53 43 41 50 45 32 2هـ 30 | نتسكيب 2.0 | اسم التطبيق المكون من 8 بايت بالإضافة إلى 3 بايت للتحقق |
| 31ب | 03 | 3 | عدد البايتات في الكتلة الفرعية التالية |
| 31 درجة مئوية | 01 | 1 | فهرس كتلة البيانات الفرعية الحالية (دائمًا 1 لكتلة NETSCAPE) |
| 31D | FF FF | 65535 | عدد التكرارات غير الموقع |
| 31 فهرنهايت | ٠٠ | نهاية سلسلة الكتل الفرعية لكتلة امتداد التطبيق | |
| 320 | 21 | '!' | كتلة إضافية (يتم إدخالها بواسطة علامة تعجب ASCII '!') |
| 321 | F9 | ملحق التحكم الرسومي للإطار رقم 1 | |
| 322 | 04 | 4 | عدد البايتات (4) في الكتلة الفرعية الحالية |
| 323 | 04 | ٠٠٠..... ...001.. ......0. .......0 | محجوز، 5 بتات سفلية هي حقل بت. طريقة التخلص 1: لا تتخلص. لا يوجد إدخال من المستخدم. لون شفاف، 0 يعني غير مُدخل. |
| 324 | 09 00 | 9 | تأخير الإطار: تأخير لمدة 0.09 ثانية قبل رسم الإطار التالي |
| 326 | FF | مؤشر اللون الشفاف (غير مستخدم في هذا الإطار) | |
| 327 | ٠٠ | نهاية سلسلة الكتل الفرعية لكتلة امتداد التحكم الرسومي | |
| 328 | 2C | ',' | مُعرِّف الصورة (الذي تم تقديمه بواسطة 0x2C، وهي فاصلة ASCII ',') |
| 329 | ٠٠ ٠٠ ٠٠ ٠٠ | (0, 0) | موضع الصورة في الزاوية الشمالية الغربية على الشاشة المنطقية: (0، 0) |
| 32D | 90 01 90 01 | (400, 400) | عرض وارتفاع الإطار: 400 × 400 بكسل |
| 331 | ٠٠ | 0 | جدول الألوان المحلي: 0 يعني لا شيء ولا تداخل |
| 332 | 08 | 8 | الحد الأدنى لحجم رمز LZW لبيانات الصورة للإطار رقم 1 |
| 333 | FF | 255 | عدد بايتات بيانات صورة LZW في الكتلة الفرعية التالية: 255 بايت |
| 334 | ... | <بيانات الصورة> | بيانات الصورة، 255 بايت |
| 433 | FF | 255 | عدد بايتات بيانات صورة LZW في الكتلة الفرعية التالية، 255 بايت |
| 434 | ... | <بيانات الصورة> | بيانات الصورة، 255 بايت |
| ⋮ | كرر ذلك مع الكتل التالية | ||
| 92C0 | ٠٠ | نهاية سلسلة الكتل الفرعية لهذا الإطار | |
| 92C1 | 21 | '!' | كتلة إضافية (يتم إدخالها بواسطة علامة تعجب ASCII '!') |
| 92C2 | F9 | ملحق التحكم الرسومي للإطار T2 | |
| ⋮ | كرر ذلك للإطارات التالية | ||
| EDABD | 21 | '!' | كتلة إضافية (يتم إدخالها بواسطة علامة تعجب ASCII '!') |
| إيدابي | F9 | ملحق التحكم الرسومي للإطار 44 | |
| ⋮ | معلومات وبيانات الصورة للإطار رقم 44 | ||
| F48F5 | 3ب | المقطع الأخير: البايت الأخير في الملف، يشير إلى نهاية الملف |
يُحدد تأخير الرسوم المتحركة لكل إطار في GCE بأجزاء من مئة من الثانية. يُمكن تحقيق بعض التوفير في البيانات عندما يحتاج الإطار فقط إلى إعادة كتابة عدد قليل من البكسلات على الشاشة، لأن مُعرّف الصورة يُمكنه تحديد مستطيل أصغر لإعادة مسحه بدلاً من الصورة بأكملها. عادةً ما تعرض المتصفحات أو الشاشات الأخرى التي لا تدعم صور GIF المتحركة الإطار الأول فقط.
يختلف حجم وجودة ألوان ملفات GIF المتحركة اختلافًا كبيرًا باختلاف التطبيق المستخدم لإنشائها. تشمل استراتيجيات تقليل حجم الملف استخدام جدول ألوان عالمي مشترك لجميع الإطارات (بدلاً من جدول ألوان محلي كامل لكل إطار) وتقليل عدد البكسلات المغطاة في الإطارات المتتالية (بحيث لا تُضمّن في الإطار الأخير إلا البكسلات التي تتغير من إطار لآخر). تتضمن التقنيات الأكثر تقدمًا تعديل تسلسلات الألوان لتتوافق بشكل أفضل مع قاموس LZW الحالي، وهو نوع من الضغط مع فقدان البيانات . عادةً ما يؤدي تجميع سلسلة من صور الإطارات المستقلة في صورة متحركة مركبة إلى أحجام ملفات كبيرة. تتوفر أدوات لتقليل حجم ملف GIF موجود.
البيانات الوصفية
يمكن تخزين البيانات الوصفية في ملفات GIF على شكل كتلة تعليق، أو كتلة نصية عادية، أو كتلة امتداد خاصة بالتطبيق. تستخدم العديد من برامج تحرير الرسومات كتل امتداد غير رسمية لتضمين البيانات المستخدمة في إنشاء الصورة، بحيث يمكن استعادتها لمزيد من التحرير.
تتطلب جميع هذه الطرق من الناحية الفنية تقسيم البيانات الوصفية إلى كتل فرعية حتى تتمكن التطبيقات من التنقل في كتلة البيانات الوصفية دون معرفة بنيتها الداخلية.
أدخل معيار بيانات التعريف القابلة للتوسيع (XMP) وحدةً إضافيةً غير رسمية، ولكنها شائعة الاستخدام الآن، تُسمى "بيانات XMP"، وذلك لإدراج بيانات XMP في ملفات GIF. [ 41 ] ولأن بيانات XMP مُشفّرة باستخدام ترميز UTF-8 بدون أحرف NUL، فلا توجد بايتات فارغة (0 بايت) في البيانات. وبدلاً من تقسيم البيانات إلى كتل فرعية رسمية، تنتهي هذه الوحدة الإضافية بـ "تذييل سحري" يُوجّه أي تطبيق يتعامل مع البيانات ككتل فرعية إلى بايت فارغ (0 بايت) يُنهي سلسلة الكتل الفرعية.
إنفاذ براءات الاختراع من قبل يونيسيس وLZW
في عامي 1977 و1978، نشر جاكوب زيف وأبراهام ليمبل ورقتين بحثيتين حول فئة جديدة من خوارزميات ضغط البيانات بدون فقدان، والتي يُشار إليها الآن مجتمعةً باسم LZ77 وLZ78 . وفي عام 1983، طوّر تيري ويلش نسخةً سريعةً من LZ78 سُمّيت ليمبل-زيف-ويلش (LZW). [ 42 ] [ 43 ]
قدّم ويلش طلب براءة اختراع لطريقة LZW في يونيو 1983. وحصلت الشركة على براءة الاختراع الناتجة، US4558302، [ 44 ] والتي مُنحت في ديسمبر 1985، وتمّ نقلها إلى شركة سبيري التي اندمجت لاحقًا مع شركة بوروز في عام 1986 لتشكيل شركة يونيسيس . [ 42 ] كما حصلت الشركة على براءات اختراع أخرى في المملكة المتحدة وفرنسا وألمانيا وإيطاليا واليابان وكندا.
بالإضافة إلى براءات الاختراع المذكورة أعلاه، تتضمن براءة اختراع ويلش لعام 1983 أيضًا إشارات إلى العديد من براءات الاختراع الأخرى التي أثرت فيها، بما في ذلك:
- براءتا اختراع يابانيتان من عام 1980 من جون كاناتسو التابع لشركة NEC ، [ 45 ] [ 46 ]
- براءة الاختراع الأمريكية رقم 4,021,782 (1974) من جون إس. هورنينغ،
- براءة الاختراع الأمريكية رقم 4,366,551 (1977) من كلاوس إي. هولتز، و
- براءة اختراع ألمانية صدرت عام 1981 من كارل إيكهارت هاينز. [ 47 ] [ 48 ]
في يونيو 1984، نُشرت مقالة بقلم ويلش في مجلة IEEE ، وصفت فيها تقنية LZW علنًا لأول مرة. [ 49 ] أصبحت LZW تقنية ضغط بيانات شائعة، وعندما مُنحت براءة الاختراع، أبرمت شركة يونيسيس اتفاقيات ترخيص مع أكثر من مئة شركة. [ 42 ] [ 50 ]
أدى رواج تقنية LZW إلى اختيار شركة CompuServe لها كتقنية ضغط لنسختها من GIF، التي طُوّرت عام 1987. في ذلك الوقت، لم تكن CompuServe على علم ببراءة الاختراع. [ 42 ] علمت شركة Unisys بأن نسخة GIF تستخدم تقنية ضغط LZW، ودخلت في مفاوضات ترخيص مع CompuServe في يناير 1993. أُعلن عن الاتفاقية اللاحقة في 24 ديسمبر 1994. [ 43 ] صرّحت Unisys بأنها تتوقع من جميع شركات خدمات المعلومات التجارية الكبرى عبر الإنترنت التي تستخدم براءة اختراع LZW ترخيص التقنية من Unisys بسعر معقول، لكنها لن تطلب أي ترخيص أو رسوم مقابل التطبيقات غير التجارية وغير الربحية القائمة على GIF، بما في ذلك تلك المستخدمة في الخدمات عبر الإنترنت. [ 50 ]
عقب هذا الإعلان، انتشرت إدانات واسعة النطاق لشركتي CompuServe وUnisys، وهدد العديد من مطوري البرامج بالتوقف عن استخدام صيغة GIF. طُوّرت صيغة PNG (انظر أدناه) عام 1995 كبديل مُفترض. [ 42 ] [ 43 ] [ 49 ] إلا أن الحصول على دعم من مُصنّعي متصفحات الويب والبرامج الأخرى لصيغة PNG كان صعبًا، ولم يكن من الممكن استبدال GIF، على الرغم من ازدياد شعبية PNG تدريجيًا. [ 42 ] لذلك، طُوّرت صيغ مُختلفة من GIF بدون ضغط LZW. على سبيل المثال، تسمح مكتبة libungif، المُستندة إلى مكتبة giflib الخاصة بإريك س. ريموند ، بإنشاء صور GIF تتبع صيغة البيانات ولكنها تتجنب ميزات الضغط، وبالتالي تتجنب استخدام براءة اختراع Unisys LZW. [ 51 ] وصفت مقالة نُشرت عام 2001 في مجلة Dr. Dobb's طريقة لتحقيق ترميز مُتوافق مع LZW للبيانات التي يُمكن ضغطها جيدًا باستخدام آلية ترميز طول التشغيل دون انتهاك براءات اختراعها. [ 52 ]
في أغسطس/آب 1999، عدّلت شركة يونيسيس تفاصيل ممارسات الترخيص الخاصة بها، معلنةً عن خيارٍ لأصحاب مواقع إلكترونية غير تجارية وخاصة مُحددة للحصول على تراخيص مقابل دفع رسوم ترخيص لمرة واحدة قدرها 5000 دولار أمريكي أو 7500 دولار أمريكي. [ 53 ] لم تكن هذه التراخيص مطلوبة لأصحاب المواقع الإلكترونية أو مستخدمي صور GIF الآخرين الذين استخدموا برامج مرخصة لإنشاء صور GIF. ومع ذلك، تعرضت يونيسيس لآلاف الهجمات الإلكترونية ورسائل البريد الإلكتروني المسيئة من مستخدمين اعتقدوا أنهم سيُطالبون بدفع 5000 دولار أمريكي أو سيُقاضون لاستخدامهم صور GIF على مواقعهم الإلكترونية. [ 54 ] على الرغم من منح تراخيص مجانية لمئات المنظمات غير الربحية والمدارس والهيئات الحكومية، إلا أن يونيسيس لم تتمكن إطلاقًا من تحقيق أي دعاية إيجابية، واستمرت في التعرض للإدانة من قبل أفراد ومنظمات مثل رابطة حرية البرمجة التي أطلقت حملة "حرق جميع صور GIF" في عام 1999. [ 55 ] [ 56 ]
انتهت صلاحية براءة اختراع LZW الأمريكية في 20 يونيو 2003. [ 57 ] وانتهت صلاحية براءات الاختراع المقابلة في المملكة المتحدة وفرنسا وألمانيا وإيطاليا في 18 يونيو 2004، وانتهت صلاحية براءات الاختراع اليابانية في 20 يونيو 2004، وانتهت صلاحية براءة الاختراع الكندية في 7 يوليو 2004. [ 57 ] ونتيجة لذلك، ورغم امتلاك شركة يونيسيس لبراءات اختراع وطلبات براءات اختراع أخرى تتعلق بتحسينات تقنية LZW، [ 57 ] فإن تقنية LZW نفسها (وبالتالي GIF) متاحة للاستخدام مجانًا منذ يوليو 2004. [ 58 ]
البدائل
PNG
صُممت صيغة الرسومات الشبكية المحمولة (PNG) كبديل لصيغة GIF لتجنب انتهاك براءة اختراع شركة Unisys لتقنية ضغط LZW. [ 42 ] توفر PNG ضغطًا أفضل وميزات أكثر من GIF، [ 59 ] باستثناء الرسوم المتحركة. تُعد PNG أكثر ملاءمة من GIF في الحالات التي تتطلب صورًا بألوان حقيقية وشفافية ألفا .
على الرغم من أن دعم تنسيق PNG بدأ ببطء، إلا أن متصفحات الويب الحديثة تدعمه الآن. لا تدعم الإصدارات القديمة من إنترنت إكسبلورر جميع ميزات PNG. فالإصدارات 6 وما قبلها لا تدعم شفافية قناة ألفا إلا باستخدام ملحقات HTML الخاصة بمايكروسوفت. [ 60 ] لم يكن تصحيح غاما لصور PNG مدعومًا قبل الإصدار 8، وقد يظهر لون هذه الصور في الإصدارات السابقة بشكل غير صحيح. [ 61 ]
بالنسبة لبيانات الصور المتطابقة ذات 8 بت (أو أقل)، تكون ملفات PNG عادةً أصغر حجمًا من ملفات GIF المكافئة، وذلك بفضل تقنيات الضغط الأكثر كفاءة المستخدمة في ترميز PNG. [ 62 ] ويُعقّد الدعم الكامل لملفات GIF بشكل أساسي بنية اللوحة المعقدة التي تسمح بها، مع أن هذه البنية هي التي تُمكّن ميزات الرسوم المتحركة المُصغّرة.
تنسيقات الرسوم المتحركة
تُعالج مقاطع الفيديو العديد من المشكلات التي تُعاني منها صور GIF عند استخدامها بشكل شائع على الإنترنت. فهي تتميز بصغر حجم ملفاتها بشكل كبير ، وقدرتها على تجاوز قيود الألوان ذات 8 بت ، وتحسين معالجة الإطارات وضغطها من خلال ترميز ما بين الإطارات . وقد ساهم الدعم شبه العالمي لصيغة GIF في متصفحات الويب ، وعدم وجود دعم رسمي للفيديو في معيار HTML ، في بروز GIF كخيار شائع لعرض ملفات قصيرة تُشبه مقاطع الفيديو على الإنترنت.
- طُوِّرت تقنية MNG (رسومات الشبكة متعددة الصور) في الأصل كحلٍّ قائم على صيغة PNG للرسوم المتحركة. وصلت MNG إلى الإصدار 1.0 في عام 2001، ولكن لا تدعمها سوى تطبيقات قليلة.
- اقترحت موزيلا تنسيق APNG (الرسومات الشبكية المحمولة المتحركة) عام 2006. يُعد APNG امتدادًا لتنسيق PNG كبديل لتنسيق MNG. يدعم معظم المتصفحات تنسيق APNG منذ عام 2019. [ 63 ] يوفر APNG إمكانية تحريك ملفات PNG، مع الحفاظ على التوافق مع الإصدارات السابقة في برامج فك التشفير التي لا تدعم جزء الرسوم المتحركة (على عكس MNG). تقوم برامج فك التشفير القديمة بعرض الإطار الأول من الرسوم المتحركة فقط.
- رفضت مجموعة بابوا غينيا الجديدة رسمياً اتفاقية بابوا غينيا الجديدة كتمديد رسمي في 20 أبريل 2007. [ 64 ]
- ظهرت عدة مقترحات لاحقة لإنشاء صيغة رسوم متحركة بسيطة تعتمد على PNG باستخدام مناهج مختلفة. [ 65 ] ومع ذلك، لا تزال Mozilla تعمل على تطوير APNG، وهي مدعومة في Firefox 3.0 [ 66 ] [ 67 ] ، بينما تم إيقاف دعم MNG. [ 68 ] [ 69 ] يدعم APNG حاليًا جميع متصفحات الويب الرئيسية، بما في ذلك Chrome (منذ الإصدار 59.0) وOpera وFirefox وEdge.
- تم استخدام كائنات Adobe Flash المضمنة وملفات MPEG على بعض مواقع الويب لعرض مقاطع فيديو بسيطة، ولكن ذلك تطلب استخدام مكون إضافي للمتصفح.
- لا تزال تقنيتا WebM و WebP قيد التطوير وتدعمهما بعض متصفحات الويب. [ 70 ]
- تشمل الخيارات الأخرى للرسوم المتحركة على الويب عرض الإطارات الفردية باستخدام AJAX ، أو تحريك صور SVG ("الرسومات المتجهة القابلة للتوسيع") باستخدام JavaScript أو SMIL ("لغة تكامل الوسائط المتعددة المتزامنة"). [ 71 ]
- مع انتشار دعم وسم الفيديو HTML (
<video>) في معظم متصفحات الويب، تستخدم بعض المواقع الإلكترونية نسخة متكررة من وسم الفيديو المُنشأ. وهذا يُعطي مظهر صورة GIF، ولكن مع مزايا الحجم والسرعة التي يتميز بها الفيديو المضغوط.
- ومن الأمثلة البارزة على ذلك موقعا Gfycat و Imgur وتنسيق GIFV الخاص بهما، وهو في الواقع عبارة عن علامة فيديو تقوم بتشغيل فيديو مضغوط بصيغة MP4 أو WebM بشكل متكرر . [ 72 ]
- HEIF ("تنسيق ملف الصور عالي الكفاءة") هو تنسيق لملفات الصور، تم اعتماده نهائيًا في عام 2015، ويستخدم خوارزمية ضغط مع فقدان البيانات تعتمد على تحويل جيب التمام المنفصل (DCT)، وهي مبنية على تنسيق فيديو HEVC ، وترتبط بتنسيق صور JPEG . وعلى عكس JPEG، يدعم HEIF الرسوم المتحركة. [ 73 ]
- بالمقارنة مع صيغة GIF التي تفتقر إلى ضغط DCT، تتيح صيغة HEIF ضغطًا أكثر كفاءة بشكل ملحوظ. إذ تخزن HEIF معلومات أكثر وتنتج صورًا متحركة بجودة أعلى بحجم أصغر بكثير من حجم صيغة GIF المكافئة. [ 74 ]
- يدعم VP9 فقط تركيب ألفا مع أخذ عينات فرعية للون 4:2:0 ، [ 75 ] وهو ما قد يكون غير مناسب لملفات GIF التي تجمع بين الشفافية والرسومات المتجهة النقطية ذات تفاصيل الألوان الدقيقة.
- يمكن أيضًا استخدام برنامج ترميز الفيديو AV1 أو AVIF إما كفيديو أو كصورة متسلسلة.
الاستخدامات
في أبريل 2014، أضاف موقع 4chan دعمًا لمقاطع فيديو WebM الصامتة التي يقل حجمها عن 3 ميجابايت ومدتها عن دقيقتين، [ 76 ] [ 77 ] وفي أكتوبر 2014، بدأ موقع Imgur بتحويل أي ملفات GIF يتم تحميلها إلى الموقع إلى فيديو H.264، ومنح رابط مشغل HTML مظهر ملف حقيقي بامتداد .gifv. [ 78 ] [ 79 ]
في يناير 2016، بدأ تطبيق Telegram في إعادة ترميز جميع صور GIF إلى مقاطع فيديو MPEG-4 التي "تتطلب مساحة تخزين أقل بنسبة تصل إلى 95٪ للحصول على نفس جودة الصورة". [ 80 ]
انظر أيضاً
- أفيف
- صورة سينمائية ، وهي صورة متحركة جزئياً غالباً ما تكون بصيغة GIF
- تقنية Clear GIF ، وهي تقنية تُستخدم للتحقق من الوصول إلى المحتوى
- مقارنة تنسيقات ملفات الرسومات
- فن GIF ، وهو شكل من أشكال الفن الرقمي المرتبط بصور GIF
- برنامج GIFBuilder ، برنامج مبكر لإنشاء صور GIF المتحركة
- GNU plotutils (يدعم pseudo-GIF، الذي يستخدم ترميز طول التشغيل بدلاً من LZW)
- برنامج Microsoft GIF Animator ، وهو برنامج تاريخي لإنشاء صور GIF متحركة بسيطة
- براءة اختراع برمجية
مراجع
- 1 2 3 "تنسيق تبادل الرسومات، الإصدار 87a" . اتحاد شبكة الويب العالمية . 15 يونيو 1987. مؤرشف من الأصل في 22 ديسمبر 2018. تم الاطلاع عليه في 13 أكتوبر 2012 .
- 1 2 3 "تنسيق تبادل الرسومات، الإصدار 89a" . اتحاد شبكة الويب العالمية . 31 يوليو 1990. مؤرشف من الأصل في 22 ديسمبر 2018. تم الاطلاع عليه في 6 مارس 2009 .
- ↑ تيفاني، كايتلين (7 أكتوبر 2022). "صورة GIF تحتضر" . مجلة ذا أتلانتيك . تم الاطلاع عليه بتاريخ 21 أكتوبر 2023 .
- ↑ "الفن عبر الإنترنت" . تطبيقات أبل من كومبيوت!. ديسمبر 1987. ص 10. تم الاطلاع عليه في 14 سبتمبر 2016 .
- ↑ هولدنر الثالث، أنتوني (2008). أجاكس: الدليل الشامل: تطبيقات تفاعلية للويب . دار نشر أورايلي ميديا. رقم ISBN 978-0596528386.
- ^ فورت ، بوركو (2008). موسوعة الوسائط المتعددة . سبرينغر. رقم ISBN 978-0387747248.
- ↑ ماكهيو، مولي (29 مايو 2015). "أخيرًا، يمكنك حقًا نشر صور GIF على فيسبوك" . مجلة وايرد . مؤرشف من الأصل في 30 مايو 2015. تم الاطلاع عليه في 29 مايو 2015 .
- ↑ بيريز، سارة (29 مايو 2015). "فيسبوك يؤكد دعمه الرسمي لصور GIF" . تيك كرانش . مؤرشف من الأصل في 30 مايو 2015. تم الاطلاع عليه في 29 مايو 2015 .
- ↑ "تقديم ملصقات GIF" . إنستغرام . ٢٣ يناير ٢٠١٨. مؤرشف من الأصل في ١٢ ديسمبر ٢٠١٩. تم الاطلاع عليه في ١٩ سبتمبر ٢٠١٩ .
- ↑ غوشال، أبهيمانيو (28 أكتوبر 2016). "استمتع بـ 1.6 مليون صورة GIF رائعة من حقبة جيو سيتيز" . TNW | Shareables . تم الاطلاع عليه في 4 نوفمبر 2024 .
- ↑ "GifCities" . gifcities.org . تم الاطلاع عليه بتاريخ 4 نوفمبر 2024 .
- ↑ "كلمة العام 2012 من قواميس أكسفورد الأمريكية" . مدونة OxfordWords . قواميس أكسفورد الأمريكية. 13 نوفمبر 2012. مؤرشف من الأصل في 3 أغسطس 2014. تم الاطلاع عليه في 1 مايو 2013 .
- ↑ فلود، أليسون (27 أبريل 2013). " كلمة GIF هي كلمة العام في أمريكا؟ هذا ما أسميه فوضى عارمة" . مدونة الكتب. صحيفة الغارديان . لندن. مؤرشف من الأصل في 1 ديسمبر 2016. تم الاطلاع عليه في 1 مايو 2013 .
- ↑ أولسن، ستيف. "صفحة نطق صور GIF" . مؤرشفة من الأصل في 25 فبراير 2009. تم الاطلاع عليها في 6 مارس 2009 .
- 1 2 3 "يقول مخترع GIF تجاهل القواميس وقل 'جيف'"" بي بي سي نيوز . 22 مايو 2013. مؤرشف من الأصل في 27 يونيو 2018. تم الاطلاع عليه في 22 مايو 2013. "
- ↑ باك، ستيفاني (21 أكتوبر 2014). "70% من الناس حول العالم ينطقون كلمة GIF بحرف g قوي " . ماشابل . مؤرشف من الأصل في 23 ديسمبر 2021. تم الاطلاع عليه في 24 ديسمبر 2021 .
- ↑ فان دير مولين، مارتن (22 مايو 2019). "أوباما، غواصة أم هدية؟: السلطة والجدل في النقاش الإلكتروني حول نطق كلمة GIF " . مجلة English Today . 36 (1): 45-50 . مؤرشف من الأصل في 24 مايو 2022. تم الاطلاع عليه في 22 مايو 2022 .
- ↑ "GIF" . قاموس اختصارات التراث الأمريكي، الطبعة الثالثة . شركة هوتون ميفلين. 2005. مؤرشف من الأصل في 3 سبتمبر 2011. تم الاسترجاع في 15 أبريل 2007 .
- ↑ "GIF" . قاموس كامبريدج للغة الإنجليزية الأمريكية . مطبعة جامعة كامبريدج. مؤرشف من الأصل في 27 فبراير 2014. تم الاطلاع عليه في 19 فبراير 2014 .
- ↑ "Gif - تعريف من قاموس ميريام-ويبستر" . قاموس ميريام-ويبستر . شركة ميريام-ويبستر. مؤرشف من الأصل بتاريخ 22 أكتوبر 2013. تم الاطلاع عليه بتاريخ 6 يونيو 2013 .
- ↑ "GIF" . قواميس أكسفورد على الإنترنت . مطبعة جامعة أكسفورد. مؤرشف من الأصل في 12 أكتوبر 2014. تم الاطلاع عليه في 7 أكتوبر 2014 .
- ↑ "gif اسم - تعريف، صور، نطق، وملاحظات استخدام | قاموس أكسفورد المتقدم للمتعلمين" . قواميس أكسفورد للمتعلمين . مؤرشف من الأصل في 24 نوفمبر 2020. تم الاطلاع عليه في 6 فبراير 2021 .
- ↑ "GIF | تعريف GIF من قاموس أكسفورد" . ليكسيكو . مؤرشف من الأصل في 13 فبراير 2021. تم الاطلاع عليه في 6 فبراير 2021 .
- ↑ ستيفنسون، أنجوس، محرر. (2010). قاموس أكسفورد الإنجليزي ( الطبعة الثالثة). مطبعة جامعة أكسفورد. ISBN 9780199571123. OCLC 729551189 .
- ↑ قاموس أكسفورد الأمريكي الجديد ( الطبعة الثانية). مطبعة جامعة أكسفورد. 2005. ص 711.
- ↑ قاموس أكسفورد الأمريكي الجديد ( الطبعة الثالثة). 2012. (جزء من القواميس المدمجة في نظام ماكنتوش).
- ↑ أولياري، إيمي (21 مايو 2013). "تكريم لمبتكر صورة GIF" . صحيفة نيويورك تايمز . مؤرشف من الأصل في 22 مايو 2013. تم الاطلاع عليه في 22 مايو 2013 .
- 1 2 روثبرغ، دانيال (4 ديسمبر 2013). ""برنامج Jeopardy يدخل في معركة نطق كلمة GIF" . صحيفة لوس أنجلوس تايمز . مؤرشف من الأصل في 6 ديسمبر 2013. تم الاطلاع عليه في 4 ديسمبر 2013 .
- ↑ أولياري، إيمي (23 مايو 2013). "اندلاع جدل حول نطق كلمة 'GIF'" . صحيفة نيويورك تايمز . مؤرشف من الأصل في 16 ديسمبر 2013. تم الاطلاع عليه في 5 ديسمبر 2013 .
- ↑ فالينسكي، جوردان (25 فبراير 2020). "جيف تحسم الجدل الكبير بصورة متحركة لمرطبان زبدة الفول السوداني" . سي إن إن . مؤرشف من الأصل في 25 فبراير 2020. تم الاطلاع عليه في 25 فبراير 2020 .
- ↑ مارور، د. ر.؛ بهاسكار، ف. (مارس 2012). "المؤتمر الدولي للأجهزة والدوائر والأنظمة (ICDCS) لعام 2012" . الأجهزة والدوائر والأنظمة (ICDCS) . المؤتمر الدولي للأجهزة والدوائر والأنظمة (ICDCS) . جامعة كارونيا؛ كويمباتور، الهند: IEEE. الصفحات 297-301 . doi : 10.1109/ICDCSyst.2012.6188724 . ISBN 9781457715457أُرشف من الأصل في 2 يوليو 2017. تم الاطلاع عليه في 11 مارس 2015 .
- ^ س. تشين؛ د.ايفرسون؛ أو كامبيساتو؛ ب. تراني (2011). برو أندرويد فلاش (PDF) . نيويورك: أبريس. ص. 350. ردمك 9781430232315تمت أرشفة الملف (PDF) من النسخة الأصلية في 2 أبريل 2015. تم الاطلاع عليه في 11 مارس 2015 .
- ↑ بخشي، سعيدة؛ شما، ديفيد أ.؛ كينيدي، ليندون؛ سونغ، ييل؛ دي خوان، بالوما؛ كاي، جوزيف "جوفيش" (7 مايو 2016). "سريع، رخيص، وجيد: لماذا تجذبنا صور GIF المتحركة" . وقائع مؤتمر CHI لعام 2016 حول العوامل البشرية في أنظمة الحوسبة . الصفحات 575-586 . doi : 10.1145/2858036.2858532 . ISBN 9781450333627. S2CID 7417853 . تم الاسترجاع في 17 أغسطس 2022 .
- ↑ هايفيلد، تيم؛ ليفر، تاما (2016). "علم إنستغرام والأساليب الرقمية: دراسة وسائل التواصل الاجتماعي المرئية، من صور السيلفي والصور المتحركة إلى الميمات والرموز التعبيرية" . بحث وممارسة الاتصال . 2 (1): 47-62 . doi : 10.1080/22041451.2016.1155332 . hdl : 20.500.11937/36939 . S2CID 148538216. تاريخ الاسترجاع: 17 أغسطس 2022 .
- 1 2 3 أندرياس كلاينرت (2007). "امتدادات GIF 24 بت (ألوان حقيقية)" . مؤرشف من الأصل في 16 مارس 2012. تم الاطلاع عليه في 23 مارس 2012 .
- 1 2 فيليب هوارد. "مثال على صورة GIF بالألوان الحقيقية" . مؤرشف من الأصل في 22 فبراير 2015. تم الاطلاع عليه في 23 مارس 2012 .
- ↑ "دراسة توافق المتصفح مع الحد الأدنى لتأخير الإطارات في صور GIF المتحركة - جيريميا جونسون" . مؤرشف من الأصل بتاريخ 10 أكتوبر 2014. تم الاطلاع عليه بتاريخ 26 مايو 2015 .
- ↑ "إنها مختلفة! كيفية مطابقة معدل حركة ملفات GIF عبر المتصفحات " . مدونة المطورين . ١٤ فبراير ٢٠١٢. مؤرشف من الأصل في ١ فبراير ٢٠١٧. تم الاطلاع عليه في ١٥ يونيو ٢٠١٧ .
- ↑ رويال فريزر. "كل شيء عن GIF89a" . مؤرشف من الأصل في 18 أبريل 1999. تم الاطلاع عليه في 7 يناير 2013 .
- ↑ سكوت والتر (1996). أسلحة سرية في برمجة الويب . دار نشر كيو . رقم ISBN 0-7897-0947-3.
- ↑ "مواصفات XMP الجزء 3: التخزين في الملفات" (ملف PDF) . أدوبي. 2016. الصفحات 11-12 . مؤرشف (ملف PDF) من الأصل بتاريخ 25 فبراير 2018. تم الاطلاع عليه بتاريخ 16 أغسطس 2018 .
- 1 2 3 4 5 6 7 غريغ رولوفس. "تاريخ تنسيق رسومات الشبكة المحمولة (PNG)" . مؤرشف من الأصل في 7 مارس 2012. تم الاطلاع عليه في 23 مارس 2012 .
- ١ ٢ ٣ ستيوارت كاي. "يوم حزين... براءة اختراع صور GIF تنتهي بعد ٢٠ عامًا" . مؤرشف من الأصل في ١٠ فبراير ٢٠١٢. تم الاطلاع عليه في ٢٣ مارس ٢٠١٢ .
- ↑ US 4558302 ، ويلش، تيري أ. ، نُشر في 10 ديسمبر 1985، مُخصص لشركة سبيري.
- ↑ براءة اختراع يابانية رقم S5719857A ، كاناتسو، جيون، "جهاز تخزين ضغط البيانات"، نُشرت في 2 فبراير 1982، مُسجلة باسم شركة NEC
- ↑ براءة اختراع يابانية رقم S57101937A ، كاناتسو، جيون، "جهاز تخزين بيانات"، نُشرت في 24-20-1986، مُسجلة باسم شركة NEC
- ^ براءة الاختراع رقم 3118676 ، إيكهارت، هاينز كارل، “Verfahren zur Kompression redundanter Folgen serieller Datenelemente [طريقة لضغط التسلسلات الزائدة عن الحاجة لعناصر البيانات التسلسلية]”، نُشرت في 2 ديسمبر 1982
- ↑ براءة اختراع أمريكية رقم 4,558,302
- 1 2 "جدل صور GIF: منظور مطور برامج" . 27 يناير 1995. مؤرشف من الأصل في 23 أغسطس 2016. تم الاطلاع عليه في 26 مايو 2015 .
- 1 2 "شركة يونيسيس توضح سياستها المتعلقة باستخدام براءات الاختراع في عروض الخدمات عبر الإنترنت" . مؤرشف من الأصل في 7 فبراير 2007.– مؤرشف بواسطة رابطة حرية البرمجة
- ↑ "Libungif" . مؤرشف من الأصل في 13 أبريل 2015. تم الاطلاع عليه في 26 مايو 2015 .
- ↑ كارغيل، توم (1 أكتوبر 2001). "استبدال القاموس بالجذر التربيعي" . مجلة دكتور دوبز . مؤرشف من الأصل في 28 يونيو 2017. تم الاطلاع عليه في 20 يناير 2017 .
- ↑ "معلومات عن برامج وبراءات اختراع LZW" . مؤرشف من الأصل في 8 يونيو 2009. تم الاطلاع عليه في 31 يناير 2007 .– توضيح بتاريخ 2 سبتمبر 1999
- ↑ شركة يونيسيس لا تقاضي (معظم) مشرفي المواقع الإلكترونية لاستخدامهم صور GIF (مؤرشف في 10 مايو 2017 على موقع Wayback Machine) - تحقيق موقع Slashdot في الجدل الدائر
- ↑ "يوم حرق جميع صور GIF" . مؤرشف من الأصل في 13 أكتوبر 1999.
- ↑ تم أرشفة جميع صور GIF في 3 فبراير 2007 على موقع Wayback Machine – وهو مشروع تابع لرابطة حرية البرمجة (أحدث إصدار)
- 1 2 3 "معلومات الترخيص الخاصة بتقنيات GIF وغيرها من التقنيات القائمة على LZW" . مؤرشف من الأصل في 2 يونيو 2009. تم الاطلاع عليه في 26 أبريل 2005 .
- ↑ «لماذا لا توجد ملفات GIF على صفحات ويب جنو؟» مؤسسة البرمجيات الحرة. مؤرشف من الأصل في 19 مايو 2012. تم الاطلاع عليه في 19 مايو 2012 .
- ↑ "مقارنة ضغط الصور بصيغة PNG مقابل GIF" . 31 مارس 2007. مؤرشف من الأصل في 15 يوليو 2009. تم الاطلاع عليه في 8 يونيو 2009 .
- ↑ "مرشح AlphaImageLoader" . مايكروسوفت. 4 سبتمبر 2012. مؤرشف من الأصل في 3 أكتوبر 2014. تم الاطلاع عليه في 26 مايو 2015 .
- ↑ "ما الجديد في إنترنت إكسبلورر 7" . MSDN . مؤرشف من الأصل في 1 مارس 2009. تم الاطلاع عليه في 6 مارس 2009 .
- ↑ "صيغة ملف صورة PNG" . مؤرشف من الأصل بتاريخ 14 يونيو 2009. تم الاطلاع عليه بتاريخ 8 يونيو 2009 .
- ↑ "هل يمكنني استخدام... جداول الدعم لـ HTML5 وCSS3 وما إلى ذلك؟" . caniuse.com . مؤرشف من الأصل في 19 فبراير 2018. تم الاطلاع عليه في 10 أبريل 2020 .
- ↑ "فشل التصويت: APNG 20070405a" . قائمة بريد SourceForge . 20 أبريل 2007. مؤرشف من الأصل في 13 فبراير 2013. تم الاطلاع عليه في 14 يوليو 2013 .
- ↑ "مناقشة حول صيغة PNG "متحركة" بسيطة" . مؤرشف من الأصل بتاريخ 26 فبراير 2009. تم الاطلاع عليه بتاريخ 12 يوليو 2011 .
- ↑ "مواصفات APNG" . مؤرشفة من الأصل في 5 يوليو 2010. تم الاطلاع عليها في 26 مايو 2015 .
- ↑ "مختبرات موزيلا » أرشيف المدونة » رسوم متحركة أفضل في فايرفوكس 3" . 13 أغسطس 2007. مؤرشف من الأصل في 7 مارس 2016. تم الاطلاع عليه في 3 فبراير 2016 .
- ↑ "195280 - إزالة دعم MNG/JNG" . مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 26 مايو 2015 .
- ↑ "18574 – (mng) استعادة دعم تنسيق الرسوم المتحركة MNG وتنسيق الصور JNG" . مؤرشف من الأصل في 17 مارس 2021. تم الاطلاع عليه في 26 مايو 2015 .
- ↑ "مدونة كروميوم: كروم 32 بيتا: صور WebP متحركة وإدخال أسرع للمس في كروم لنظام أندرويد" . Blog.chromium.org. 21 نوفمبر 2013. مؤرشف من الأصل في 17 يوليو 2018. تم الاطلاع عليه في 1 فبراير 2014 .
- ↑ كالو، خوان. "الرسوم المتحركة بصيغة SVG - دليل" . توبتال . تم الاطلاع عليه بتاريخ 15 مارس 2024 .
- ↑ "تقديم GIFV - مدونة Imgur" . imgur.com. 9 أكتوبر 2014. مؤرشف من الأصل في 14 ديسمبر 2014. تم الاطلاع عليه في 14 ديسمبر 2014 .
- ↑ تومسون، جافين؛ شاه، أثار (2017). "مقدمة إلى HEIF وHEVC" (ملف PDF) . شركة آبل. مؤرشف (ملف PDF) من الأصل في 19 يناير 2020. تم الاطلاع عليه في 5 أغسطس 2019 .
- ↑ "مقارنة HEIF - تنسيق ملف الصور عالي الكفاءة" . نوكيا تكنولوجيز . مؤرشف من الأصل في 25 يوليو 2019. تم الاطلاع عليه في 5 أغسطس 2019 .
- ↑ "#3271 (السماح باستخدام تنسيقات بكسل إضافية مع libvpx-vp9) – FFmpeg" . trac.ffmpeg.org . مؤرشف من الأصل في 16 يونيو 2020. تم الاطلاع عليه في 10 أبريل 2020 .
- ↑ ديوي، كايتلين. "تعرّف على التقنية التي قد تجعل صور GIF قديمة الطراز" . صحيفة واشنطن بوست . مؤرشف من الأصل في 11 مايو 2015. تم الاطلاع عليه في 4 فبراير 2015 .
- ↑ "دعم WebM على 4chan" . مدونة 4chan . تم الاطلاع عليه بتاريخ 4 فبراير 2015 .
{{cite web}}: CS1 maint: url-status ( link ) - ↑ "تقديم GIFV" . Imgur. 9 أغسطس 2014. مؤرشف من الأصل في 5 مايو 2020. تم الاطلاع عليه في 21 يوليو 2016 .
- ↑ آلان، باتريك (9 أكتوبر 2014). "إمجور تُحسّن صور GIF لسرعات أعلى وجودة أفضل باستخدام GIFV" . لايف هاكر . مؤرشف من الأصل في 3 فبراير 2015. تم الاطلاع عليه في 4 فبراير 2015 .
- ↑ "ثورة الصور المتحركة GIF" . مدونة تيليجرام الرسمية . 4 يناير 2016. مؤرشفة من الأصل في 10 يناير 2016. تم الاطلاع عليها في 4 يناير 2016 .
روابط خارجية
- مشروع GIFLIB
- spec-gif89a.txt مواصفات GIF 89a على موقع w3.org
- تمت إعادة تنسيق مواصفات GIF 89a إلى HTML
- شرح LZW و GIF
- صور متحركة بصيغة GIF : فيلم وثائقي مدته ست دقائق من إنتاج Off Book (سلسلة ويب)
- تنسيقات ملفات الرسومات المتحركة
- تنسيقات ملفات الرسومات النقطية
- كومبيوسيرف
- التنسيقات المفتوحة
- مقدمات متعلقة بالحاسوب في عام 1987
- الجدل حول الاكتشاف والاختراع



