מהו קובץ GIF?
GIF או Graphical Interchange Format הוא סוג של תמונה דחוסה מאוד. בבעלות Unisys, GIF משתמש באלגוריתם הדחיסה LZW שאינו פוגע באיכות התמונה. עבור כל תמונה GIF בדרך כלל מאפשר עד 8 סיביות לפיקסל ועד 256 צבעים מותרים על פני התמונה. בניגוד לתמונה JPEG, שיכולה להציג עד 16 מיליון צבעים ונוגעת למדי בגבולות העין האנושית. כשהאינטרנט הופיע, קובצי GIF נותרו הבחירה הטובה ביותר מכיוון שהם דרשו רוחב פס נמוך ותואם לגרפיקה שצורכת אזורי צבע אחידים. GIF מונפש משלב מספר רב של תמונות או פריימים לקובץ אחד ומציג אותם ברצף ליצירת קליפ מונפש או סרטון וידאו קצר. מגבלות הצבע הן עד 256 עבור כל פריים וסביר להניח שהן יהיו הפחות מתאימות לשחזור תמונות ותצלומים אחרים עם מעבר צבע.
פורמט קובץ GIF
מבחינה קונספטואלית, לקבצי GIF יש אזור גרפי בגודל קבוע שממולא באפס תמונות או יותר. חלק מקובצי GIF מחלקים את האזור הגרפי או הבלוקים בגודל קבוע לתת-תמונות המסוגלות לתפקד כפריימים מונפשים במקרה של GIF מונפש. פורמט ה-GIF משתמש בעומק הפיקסלים של 1 עד 8 סיביות כדי לאחסן את נתוני מפת הסיביות. נתוני מודל צבע RGB ונתוני לוח משמשים תמיד לאחסון התמונות. בהתאם לגרסה, כותרת באורך קבוע (“GIF87a” או “GIF89a”) מגדירה את ההתחלה של קובץ GIF טיפוסי.
נכון לעכשיו, שתי גרסאות של GIF: 87a ו-89a זמינות. הראשון הוא פורמט ה-GIF המקורי ואילו השני הוא פורמט ה-GIF החדש. בפורמט קובץ זה, המאפיינים של הבלוקים וממדי הפיקסלים מוזכרים במתאר מסך לוגי באורך קבוע. קיומה וגודלה של טבלת צבעים גלובלית עשויים להיות מוגדרים על ידי מתאר המסך, שעוקב אחר פרטים נוספים אם קיימים. הטריילר הוא הבית האחרון של הקובץ שמכיל בייט בודד של נקודה-פסיק של ASCII. פריסת קובץ GIF87a טיפוסית היא כדלקמן:
כותרת
ה-Header מכיל שישה בתים ומשמש לציון סוג הקובץ כ-GIF. אמנם מתאר המסך הלוגי מופרד מהכותרת האמיתית, אך לפעמים הוא נחשב לכותרת השנייה. אותו מבנה המשמש לאחסון הכותרת עשוי לאחסן את מתאר המסך הלוגי. כל קובצי ה-GIF מתחילים בחתימת ה-3 בתים ומשתמשים בתווים “GIF” כמזהה. הגרסה היא גם בגודל של שלושה בתים ומצהירה על הגרסה של קובץ ה-GIF.
מתאר מסך לוגי
מתאר תמונה באורך קבוע מציין את המסך והצבעים הנחוצים ליצירת תמונת GIF. השדות Height ו-Width כוללים את הערך הקטן ביותר של רזולוציית המסך, חובה להציג את נתוני התמונה. אם התקן התצוגה אינו מסוגל להציג את הרזולוציה שצוינה, יהיה צורך בשינוי קנה מידה כדי להציג את התמונה בצורה מתאימה. מידע על מסך ומפת צבע מוצג על ידי ארבעת שדות המשנה של הטבלה למטה (בעוד סיביות 0 היא הסיביות הכי פחות משמעותיות):
ביטים | שדות משנה |
---|---|
0-2 | גודל טבלת הצבעים הגלובלית |
3 | דגל מיון טבלה בצבע |
4-6 | רזולוציית צבע |
7 | דגל טבלת צבעים גלובלית |
טבלת צבעים גלובלית
טבלת צבעים גלובלית אופציונלית ממוקמת מיד אחרי מתאר המסך הלוגי. טבלה זו ממופה כדי לאינדקס את נתוני צבע הפיקסלים בתוך נתוני התמונה. בהיעדר טבלת צבעים גלובלית, כל תמונה בקובץ ה-GIF משתמשת בצבע המקומי שלה. עדיף לספק טבלת צבעים כברירת מחדל אם חסרה טבלת צבעים גלובלית וגם מקומית. סדרה של שלושה בתים מרכיבה את האלמנטים של טבלת הצבעים. כל בייט מאפיין ערך צבע RGB. הצבעים האדום, הירוק והכחול משמשים כערכים של כל אלמנט בטבלת הצבעים. הערכים בטבלת הצבעים הגלובלית פוגעים במקסימום של 256 ערכים ומייצגים תמיד בחזקת שתיים.
נתוני תמונה
נתוני התמונה מאחסנים בתים של סמלים לא מקודדים ואחריהם רשימה מקושרת של תת יחד עם הנתונים המקודדים LZW.
טריילר
טריילר מייצג בייט בודד של נתונים שהוא התו האחרון בקובץ. הערך של בית זה הוא לצמיתות 3Bh ומציין את סוף זרם הנתונים. לכל קובץ GIF חייב להיות הטריילר באחרון של כל קובץ.