GIF
امتداد اسم الملف |
|
---|---|
نوع وسائط الإنترنت |
|
كود النوع |
|
Uniform Type Identifier (UTI) | com.compuserve.gif |
Magic number | GIF87a /GIF89a |
طوره | CompuServe |
أول إصدار | 15 يونيو 1987 [1] |
أحدث إصدار | |
نوع الصيغة | lossless bitmap image format |
الموقع الإلكتروني | www |
نسق الرسومات المتبادلة (إنگليزية: Graphics Interchange Format؛ اختصاراً GIF؛ /ɡɪf/ GHIF أو /dʒɪf/ JIF، see pronunciation)، هو نسق صور للرسومات النقطية طوره فريق في شركة كمپيوسرڤ] بقيادة عالم الحاسوب الأمريكي [[ستيڤ ولهايتي] وطُرح في 15 يونيو 1987.[1] ومنذ ذلك الحين انتشر استخدامه على شبكة الوب نظراً لدعمه الواسع وإمكانية النقل بين التطبيقات وأنظمة التشغيل.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
التاريخ
عمل مهندس الحاسوب الأمريكي ستيفن ولهايت وفريقه في كمپيوسرڤ على صيغة ملفات GIF، أو نسق الرسومات المتبادلة، والذي يُستخدم الآن للتفاعلات والرسائل والنكات، أثناء عمله في كمپيوسرڤ في الثمانينيات. تقاعد في أوائل عقد 2000 وقضى وقته في السفر والتخييم وبناء نماذج القطارات في قبو منزله. [3]
على الرغم من أن ملفات GIF مرادفة لميمات الإنترنت المتحركة هذه الأيام، لم يكن هذا هو السبب وراء إنشاء ولهايت للتنسيق. قدمتها كمپيوسرڤ في أواخر الثمانينيات كطريقة لتوزيع "رسومات عالية الجودة وعالية الدقة" بالألوان في وقت كانت فيه سرعات الإنترنت بطيئة للغاية مقارنة بما هي عليه اليوم. قالت زوجته كاثالين: "لقد اخترع GIF بمفرده - لقد فعل ذلك بالفعل في المنزل وأدخله إلى العمل بعد أن أتقنه". "كان يكتشف كل شيء بمفرده ثم يذهب إلى المدينة لبرمجته على الحاسوب."
في مقابلة مع صحيفة التايمز، قال ولهايت إن أحد ملفات GIF المفضلة لديه هو ميم الطفل الراقص، والذي انتشر بسرعة قبل استخدام مصطلح "الميمات" و"الانتشار السريع" على نطاق واسع.
المصطلح
النطُق
بينما كانت هناك نقاشات طويلة الأمد حول النطق الصحيح لتنسيق الصورة، كان ولهايت واضحًا جدًا حول الكيفية التي كان ينوي أن يقال بها. عام 2013، قال لصحيفة نيويورك تايمز، "يقبل قاموس أوكسفورد الإنجليزي كلا المنطقين. هم مخطئون. إنها كلمة "ج" ناعمة، تُنطق "جيف".
كرر هذا الموقف أثناء قبوله جائزة وبي للإنجاز مدى الحياة عن اختراع GIF في وقت لاحق من ذلك الشهر، باستخدام الرسوم المتحركة لإلقاء خطاب القبول. قالت كاثالين: "بعد 25 عامًا، كرّموا أخيرًا هذا الإنجاز الذي حققه"، مضيفة أن إنشاء GIF كان أكثر ما كان يفتخر به.
الاستخدام
نسق الملف
اللوحات
اللون الحقيقي
مثال على ملفات GIF
بايت # (hex) | نظام الست عشري | النص أو القيمة | المعنى | ||||||
---|---|---|---|---|---|---|---|---|---|
0 | 47 49 46 38 39 61 | GIF89a | رأس الصفحة | ||||||
6 | 03 00 | 3 | عرض الشاشة المنطقي | ||||||
8 | 05 00 | 5 | ارتفاع الشاشة المنطقي | ||||||
A | F7 | يتبع GCT 256 لوناً بدقة 3قالب:Resx8 بت/أساسي، وتمثل أقل 3 بت عمق البت مطروحاً منه 1، ويعني أعلى بت حقيقي وجود GCT | |||||||
B | 00 | 0 | لون خلفية : #000000, أسود | ||||||
C | 00 | 0 | نسبة العرض إلى الارتفاع الافتراضية للپكسل، 0:0 | ||||||
D | 00 00 00 |
|
جدول الألوان العام, لون #0: #000000, أسود | ||||||
10 | 80 00 00 |
|
جدول الألوان العام، لون #1: بت شفاف، لا تستخدم في الصور | ||||||
... | ... | ... | يمتد جدول الألوان العام إلى 30A | ||||||
30A | FF FF FF |
|
جدول الألوان العام، لون#255: #ffffff, أبيض | ||||||
30D | 21 F9 | ملحق التحكم في الرسوم (حقول التعليق تسبق هذا في معظم الملفات) | |||||||
30F | 04 | 4 | مقدار بيانات GCE، 4 بايت | ||||||
310 | 01 | لون خلفية شفافة؛ هذا حقل بت، أدنى بت يدل على الشفافية | |||||||
311 | 00 00 | تأخير للرسوم المتحركة في مئات من الثانية؛ غير مستعمل | |||||||
313 | 10 | 16 | رقم لون الپكسل الشفاف في GCT | ||||||
314 | 00 | نهاية كتلة GCE | |||||||
315 | 2C | واصف الصورة | |||||||
316 | 00 00 00 00 | (0, 0) | موضع الزاوية الشمالية الغربية للصورة في الشاشة المنطقية | ||||||
31A | 03 00 05 00 | (3, 5) | عرض الصورة وارتفاعها بالپكسل | ||||||
31E | 00 | 0 | بت جدول الألوان المحلية، 0 يعني لا شيء | ||||||
31F | 08 | 8 | بداية الصورة، الحد الأدنى لحجم رمز LZW | ||||||
320 | 0B | 11 | يتبع مقدار الصورة المشفرة LZW 11 بايت | ||||||
321 | 00 51 FC 1B 28 70 A0 C1 83 01 01 | <image data> | 11 بايت من بيانات الصورة، انظر الحقل 320 | ||||||
32C | 00 | 0 | نهاية كتلة بيانات الصورة | ||||||
32D | 3B | إنهاء الملف |
ترميز الصورة
كود 9 بت | بايت | ||
---|---|---|---|
نظام العد الست عشري | نظام العد الثنائي | نظام العد الست عشري | نظام العد الثنائي |
100 | 1 00000000 | 00000000 | 00 |
028 | 00 0101000 | 0101000 1 | 51 |
0FF | 011 111111 | 111111 00 | FC |
103 | 1000 00011 | 00011 011 | 1B |
102 | 10000 0010 | 0010 1000 | 28 |
103 | 100000 011 | 011 10000 | 70 |
106 | 1000001 10 | 10 100000 | A0 |
107 | 10000011 1 | 1 1000001 | C1 |
10000011 | 83 | ||
101 | 1 00000001 | 00000001 | 01 |
0000000 1 | 01 |
فك ترميز الصورة
نعم | إضافة سلسلة للرمز المحلي متبوعة بالبايت الأول من السلسلة للرمز الوارد |
لا | إضافة سلسلة للرمز المحلي متبوعة بنسخة من البايت الأول الخاص بها |
shift 9-bit ----> Local Table Pixel code code code --> string Palette color Action 100h 000h | #0 Initialize root table of 9-bit codes : | palette : | colors 0FFh | #255 100h | clr 101h | end 028h | #40 BLACK Decode 1st pixel 0FFh 028h | Incoming code found in table | #255 WHITE - output string from table 102h | 28 FF - add to table 103h 0FFh | Incoming code not found in table 103h | FF FF - add to table | - output string from table | #255 WHITE | #255 WHITE 102h 103h | Incoming code found in table | - output string from table | #40 BLACK | #255 WHITE 104h | FF FF 28 - add to table 103h 102h | Incoming code found in table | - output string from table | #255 WHITE | #255 WHITE 105h | 28 FF FF - add to table 106h 103h | Incoming code not found in table 106h | FF FF FF - add to table | - output string from table | #255 WHITE | #255 WHITE | #255 WHITE 107h 106h | Incoming code not found in table 107h | FF FF FF FF - add to table | - output string from table | #255 WHITE | #255 WHITE | #255 WHITE | #255 WHITE 101h | End
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
أطوال رمز LZW
GIF الغير مضغوط
بايت # (hex) | نظام العد الست عشري | النص أو القيمة | المعنى |
---|---|---|---|
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 | 00 | 0 | نهاية بيانات الصورة |
مثال الضغط
الرمز | الپكسلات | ملاحظات | |||
---|---|---|---|---|---|
No.Ni | قيمةNi + 256 | طول(البتات) | This codeNi | تراكمNi(Ni + 1)/2 | العلاقات التي تستخدم Ni تنطبق فقط على وحدات الپكسل ذات اللون نفسه حتى يمتلئ جدول الترميز. |
0 | 100h | 9 | مسح جدول التعليمات البرمجية | ||
1 | FFh | 1 | 1 | تم اختيار لون الپكسل الأيسر العلوي كأعلى مؤشر للوحة ذات 256 لون | |
2 | 102h | 2 | 3 | ||
3⋮255 | 103h⋮1FFh | 3⋮255 | 6⋮32640 | آخر كود 9 بت | |
256⋮767 | 200h⋮3FFh | 10 | 256⋮767 | 32896⋮294528 | رمز آخر 10 بت |
768⋮1791 | 400h⋮7FFh | 11 | 768⋮1791 | 295296⋮1604736 | رمز 11 بت الأخير |
1792⋮3839 | 800h⋮FFFh | 12 | 1792⋮3839 | 1606528⋮7370880 | ملئ جدول الرمز |
⋮ | FFFh | 3839 | قد يتكرر الحد الأقصى للرمز لمزيد من وحدات البكسل ذات اللون نفسه. يقترب ضغط البيانات الإجمالي بشكل مقارب 3839 × 8/12 = 2559+1/3 | ||
101h | نهاية بيانات الصورة |
تُجمع قيم الكود الموضحة في وحدات البايت التي يتم تعبئتها بعد ذلك في كتل تصل إلى 255 بايت. تبدأ كتلة بيانات الصورة ببايت يحدد عدد البايتات التي يجب اتباعها. يتم تمييز الكتلة الأخيرة من البيانات للصورة ببايت بطول كتلة صفري.
التشابك
GIF المتحركة
يوضح المثال التالي بنية ملف الرسوم المتحركة Rotating earth (large).gif المعروض (كصورة مصغرة) في صندوق المعلومات الخاص بالمقالة.
بايت # (hex) | نظام العد الست عشري | النص أو القيمة | المعنى |
---|---|---|---|
0 | 47 49 46 38 39 61 | GIF89a | واصف الشاشة المنطقية |
6 | 90 01 | 400 | العرض بالپكسل |
8 | 90 01 | 400 | الارتفاع بالپكسل |
A | F7 | تتبع GCT 256 لوناً بدقة 3قالب:Resx8 بت/أساسي | |
B | 00 | 0 | لون الخلفية: #000000، أسود |
C | 00 | 0 | نسبة العرض إلى الارتفاع الافتراضية للبكسل، 0:0 |
D | 00 | جدول الألوان العام | |
⋮ | |||
30D | 21 FF | ملحق التطبيق | |
30F | 0B | 11 | حجم الكتلة بما في ذلك اسم التطبيق وبايت التحقق (دائماً 11) |
310 | 4E 45 54 53 43 41 50 45 32 2E 30 | NETSCAPE2.0 | اسم التطبيق ذو 8 بايت بالإضافة إلى 3 بايت التحقق |
31B | 03 | 3 | عدد البايتات في الكتلة الفرعية التالية |
31C | 01 | 1 | فهرس كتلة البيانات الفرعية الحالية (دائماً 1 لكتلة NETSCAPE) |
31D | FF FF | 65535 | عدد غير مرمز من التكرار |
31F | 00 | نهاية سلسلة الكتل الفرعية لكتلة امتداد التطبيق | |
320 | 21 F9 | امتداد التحكم في الرسومات للإطار #1 | |
322 | 04 | 4 | عدد البايتات (4) في الكتلة الفرعية الحالية |
323 | 04 | 000.....
...001..
......0.
.......0
|
محجوزة، 5 بتات دنيا في حقل بت طريقة الترتيب 1: لا تتخلص منها |
324 | 09 00 | 9 | تأخير الإطار: 0.09 ثانية تأخير قبل تلوين الإطار التالي |
326 | FF | مؤشر اللون الشفاف (غير مستخدم في هذا الإطار) | |
327 | 00 | نهاية سلسلة الكتل الفرعية لكتلة امتداد التحكم في الرسوم | |
328 | 2C | واصف الصورة للإطار #1 | |
329 | 00 00 00 00 | (0, 0) | موضع الزاوية الشمالية الغربية للصورة في الشاشة المنطقية: (0, 0) |
32D | 90 01 90 01 | (400, 400) | عرض الإطار وارتفاعه: 400قالب:Resx400 پكسل |
331 | 00 | 0 | جدول الألوان المحلي: 0 يعني لا شيء ولا يوجد تداخل |
332 | 08 | 8 | الحد الأدنى لحجم رمز LZW لبيانات الصورة للإطار #1 |
333 | FF | 255 | عدد بايتات بيانات صورة LZW في الكتلة الفرعية التالية: 255 بايت |
334 | ... | <بيانات الصورة> | بيانات الصورة، 255 بايت |
433 | FF | 255 | عدد بايتات بيانات صورة LZW في الكتلة الفرعية التالية، 255 بايت |
434 | ... | <بيانات الصورة> | بيانات الصورة، 255 بايت |
⋮ | تكرار للكتل التالية | ||
92C0 | 00 | نهاية سلسلة الكتل الفرعية لهذا الإطار | |
92C1 | 21 F9 | امتداد التحكم في الرسم للإطار #2 | |
⋮ | تكرار للإطارات التالية | ||
EDABD | 21 F9 | امتداد التحكم في الرسم للإطار #44 | |
⋮ | معلومات وبيانات الصورة للإطار #44 | ||
F48F5 | 3B | سلسلة: يشير آخر بايت في الملف، إلى EOF |
البيانات الوصفية
يونيسيس إنفاذ براءة اختراع LZW
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
البدائل
PNG
النسق المتحركة
انظر أيضاً
- AVIF
- Cinemagraph، صورة متحركة جزئياً غالباً بتنسيق GIF
- Comparison of graphics file formats
- Comparison of layout engines (graphics)
- GIF art، شكل من فن رقمي مرتبط بـ GIF
- GIFBuilder، برنامج إنشاء animated GIF مبكر
- GNU plotutils (يدعم صور شبيهة الـGIF، التي تستخدم ترميز وفق طول التتابع بدلاً من LZW)
- Microsoft GIF Animator، برنامج هام لإنشاء صور GIF متحركة بسيطة
- براءة اختراع البرمجيات
المصادر
- ^ أ ب "Graphics Interchange Format, Version 87a". W3C. 15 June 1987. Archived from the original on 25 December 2018. Retrieved 13 October 2012.
- ^ "Graphics Interchange Format, Version 89a". W3C. 31 July 1990. Archived from the original on 25 December 2018. Retrieved 6 March 2009.
- ^ "Stephen Wilhite, creator of the GIF, has died". theverge.com. 2022-03-23. Retrieved 2022-03-24.
وصلات خارجية
- The GIFLIB project
- spec-gif89a.txt GIF 89a specification on w3.org
- GIF 89a specification reformatted into HTML
- LZW and GIF explained
- Animated GIFs: a six-minute documentary produced by Off Book (web series)
- GifCities (The GeoCities Animated GIF Search Engine)