GIF

تاریخچه

کامپیوسرو فرمت گیف را در سال ۱۹۸۷ به عنوان یک فرمت تصویر رنگی برای صفحه دانلود فایل‌های خود ارائه کرد تا آن را جایگزین فرمت سیاه و سفید سابق خود RLE نماید. گیف به علت استفاده از فشرده‌سازی داده‌ها ال زد دابلیو، که از کدگذاری‌های فرمت‌هایی همچون PCX و MacPaint بهینه‌تر بود و همچنین امکان آن را می‌داد که تصاویر نسبتاً حجیم حتی با مودم‌هایی بسیار کند در مدت کوتاهی بارگذاری شوند، شهرت یافت و محبوب شد.
نسخه اصلی و اولیه گیف 87a نام‌گذاری شد. در سال ۱۹۸۹ میلادی، کامپیوسرو یک نسخهٔ بهبودیافته تحت عنوان 89a ارائه کرد که از امکاناتی همچون تأخیر در پویانمایی، شفافیت رنگ‌های پس‌زمینه و ذخیرهٔ فراداده منحصر به هر برنامه پشتیبانی می‌کرد. نسخهٔ 89a همچنین از امکان به کاربستن برچسب‌های متنی به صورت متن (و نه نهفته کردن آن‌ها در داده‌های گرافیکی) پشتیبانی می‌نماید، ولی از آنجایی که کنترل ناچیزی بر فونت‌های نمایش این متون وجود دارد، این امکان به صورت فراگیر مورد استفاده نیست. جهت ایجاد تمایز میان این دو نسخه از فایل‌های گیف، می‌توان به شش بایت اول فایل موردنظر (معروف به "عدد جادویی" یا "امضا") توجه کرد، که اگر به عنوان یک کد اسکی (استاندارد) بدان توجه شود، به ترتیب عبارات "GIF87a" و "GIF89a" را نمایش می‌دهد.
این ویژگی گیف که بتوان چند تصویر را در یک فایل ذخیره نمود، همراه با امکان کنترل داده‌ای، به شکل فراگیر و گسترده‌ای برای تولید پویانمایی‌های ساده در وب استفاده می‌شود. امکان اختیاری درهم‌تنیدگی تصویر، که خطوط اسکن تصویر را خارج از ترتیب پیش‌بینی‌شده به‌گونه‌ای ذخیره می‌نماید که حتی یک تصویر کاملاً بارگذاری نشده هم تا حدودی قابل تشخیص باشد، نیز به رونق گیف کمک کرد، چرا که کاربر با بهره بردن از آن می‌تواند قبل از تکمیل بارگذاری فایل دیدی نسبت به آن یافته و به محض تشخیص عدم تمایل خود به آن فایل دانلود را متوقف کند.
کلمهٔ "گیف " به عنوان یک اسم در ویراست‌های جدیدتر بسیاری از لغت‌نامه‌های انگلیسی یافت می‌شود. در سال ۲۰۱۲ میلادی، شاخهٔ آمریکایی انتشارات دانشگاه آکسفورد کلمهٔ "GIF" را به عنوان یک فعل، به معنی "ساختن یک فایل گیف"، پذیرفت. واژه‌شناسان این انتشارات آن را به عنوان "واژهٔ سال" برگزیدند، با این توضیح که گیف‌هابه صورت "یک ابزار جدی در پژوهش و خبرنگاری" تکامل یافته و به بلوغ رسیده‌اند.
در ماه می سال ۲۰۱۵ میلادی، فیسبوک پس از آن که در ابتدا پشتیبانی از گیف را رد کرده بود، رسماً پشتیبانی از آن را پذیرفت.

تنوع و ترکیبات رنگ موجود

گیف‌ها مبتنی بر رنگ و تنوع رنگی هستند، بدین‌معنی که رنگ‌های به‌کاررفته در یک تصویر (frame) در یک فایل مقادیر RGB (قرمز، سبز، آبی) خود را در یک جدول رنگ که تا ۲۵۶ داده را می‌تواند نگه‌دارد به صورت ذخیره شده دارند، و داده‌های تصویر با اندیس (۰ الی ۲۵۵) به مقادیر موردنظر برای رنگ خود در جدول رنگ اشاره می‌کنند. با آن که تنوع ترکیبات رنگ موجود برای گیف‌ها بسیار زیاد است، ولی حداکثر تعداد رنگ‌هایی که می‌توانند به صورت هم‌زمان در یک تصویر (frame) به نمایش درآیند ۲۵۶ می‌باشد. این محدودیت در زمان معرفی گیف‌ها معقول و منطقی به نظر می‌رسید، چراکه در آن زمان تعداد بسیار کمی از افراد بودند که به سخت‌افزاری با امکان نمایش بیش از ۲۵۶ رنگ به صورت هم‌زمان دسترسی داشتند. کارتون‌ها، نقاشی‌های خطی، کارهای گرافیکی ساده و عکس‌های سیاه و سفید معمولاً نیاز به حداکثر ۲۵۶ رنگ دارند.
یک جدول رنگ کوچک می‌تواند نیازهای تصاویر کوچک را برآورده نماید، و کوچک نگه‌داشتن جدول رنگ امکان آن را فراهم می‌کند که گیف سریع‌تر دانلود شود. در هر دو نسخهٔ 87a و 89a امکان ساختن جدول رنگ که تعداد رنگ‌های آن توانی از ۲ می‌باشد که توان دو بین ۱ تا ۸ باشد را می‌دهد. اکثر نرم‌افزارهای گرافیکی تصاویر گیف با جدول رنگ در هریک از این ابعاد را خوانده و به نمایش درمی‌آورند، ولی برخی نرم‌افزارهای گرافیکی از تمام ابعاد جدول رنگ به هنگام ساخت آن پشتیبانی نمی‌کنند. جدول رنگ‌هایی با ۲، ۱۶ و ۲۵۶ رنگ به‌طور گسترده پشتیبانی می‌شوند.

رنگ واقعی (True Color)

هرچند که تقریباً هیچ‌گاه از گیف‌ها برای نمایش تصاویر با رنگ واقعی (True Color) استفاده نمی‌شود، امکان آن وجود دارد که چنین کاری انجام شود. یک تصویر گیف می‌تواند شامل تعدادی بلوک تصویر باشد، که هر یک می‌تواند ۲۵۶ رنگ متفاوت خود را داشته باشد، و در نهایت این بلوک‌ها در کنارهم تصویر کلی را می‌سازند که می‌تواند تعدادی بسیار بیشتر از ۲۵۶ رنگ را شامل شود.
برای نمایش یک تصویر کاملاً رنگی با تمام رنگ‌های آن، تصویر اصلی می‌بایست به تکّه‌هایی کوچک‌تر تقسیم شود که هیچ‌یک بیش از ۲۵۵ یا ۲۵۶ رنگ مختلف را شامل نمی‌شوند. سپس هریک از این تکّه‌ها به صورت یک بلوک تصویر مجزا با جدول رنگ محلی (Local Color Table) خود ذخیره‌سازی می‌شود و وقتی که این تکّه‌های تصویر در کنارهم به نمایش درمی‌آیند، تصویر کاملاً رنگی اولیه به نمایش درمی‌آید. به عنوان مثال، می‌توان یک تصویر را به مربع‌هایی با ضلع ۱۶ پیکسل (یعنی هر مربع شامل ۲۵۶ پیکسل) شکست تا اطمینان حاصل نماییم که هر مربع حداکثر شامل ۲۵۶ رنگ مجزاست که در محدودهٔ امکان ذخیره‌سازی هر بلوک تصویر قرار دارد و هیچ رنگی از دست نمی‌رود. هرچند می‌توان ابعاد قطعات را بزرگ‌تر درنظرگرفته و رنگ‌های مشابه را یکی درنظرگرفت تا در عوض مقداری کاهش احتمالی تنوع رنگ و نتیجتاً کیفیت تصویر نهایی، حجم فایل تصویر نیز احتمالاً کاهش یابد.
از آن‌جایی که هر بلوک تصویر نیازمند جدول رنگ محلی (Local Color Table) مخصوص به خود می‌شد، یک فایل گیف با تعداد زیادی بلوک تصویر می‌تواند بسیار بزرگ و حجیم شود، و این امر کاربرد گیف‌های تمام رنگی (full color) را محدود می‌کند. علاوه بر این، تمام برنامه‌های پردازش فایل‌های گیف نمی‌توانند به درستی قطعات فایل را در کنار یک‌دیگر بچینند. بسیاری از برنامه‌های پردازش فایل‌های گیف قطعات مختلف عکس را به عنوان قاب (frame)های مختلف یک پویانمایی درنظرگرفته و آن‌ها را به شکل یک پویانمایی نامتناهی به نمایش درمی‌آورند، که عموم مرورگرها پویانمایی‌ها را با فاصله زمانی (تأخیر زمانی) ۰٫۱ ثانیه یا بیشتر به نمایش درمی‌آورند.

یک فایل گیف نمونه

در این بخش یک نمونه از فایل گیف آمده‌است.
شایان ذکر است که اعداد هگزادسیمال (در دستگاه اعداد پایه ۱۶) در جداول پیش‌رو دارای اندیان کوچک (little endian byte order) هستند.
byte# hexadecimal text or
(hex) value Meaning
0: 47 49 46
  38 39 61 GIF89a Header
  Logical Screen Descriptor
6: 03 00 3 - logical screen width in pixels
8: 05 00 5 - logical screen height in pixels
A: F7 - GCT follows for 256 colors with resolution 3 x 8 bits/primary
B: 00 0 - background color #0
C: 00 - default pixel aspect ratio
  R G B Global Color Table
D: 00 00 00 0 0 0 - color #0 black
10: 80 00 00 128 0 0 - color #1
::
85: 00 00 00 0 0 0 - color #40 black
::
30A: FF FF FF 255 255 255 - color #255 white
30D: 21 F9 Graphic Control Extension
30F: 04 4 - 4 bytes of GCE data follow
310: 01 - there is a transparent background color
311: 00 00 - delay for animation: not used
313: 10 16 - color #16 is transparent
314: 00 - end of GCE block
315: 2C Image Descriptor
316: 00 00 00 00 (0,0) - NW corner position of image in logical screen
31A: 03 00 05 00 (3,5) - image width and height in pixels
31E: 00 - no local color table
31F: 08 8 Start of image - LZW minimum code size
320: 0B 11 - 11 bytes of LZW encoded image data follow
321: 00 51 FC 1B 28 70 A0 C1 83 01 01
32C: 00 - end of image data
32D: 3B GIF file terminator

آیندهٔ احتمالی گیف‌ها

امروزه گسترهٔ کاربرد گیف‌ها بسیار زیاد و رو به فزونی است، به‌گونه‌ای که برخی صاحب‌نظران آن را استاندارد غالب ارتباطی انسان‌ها در فضای مجازی و اصلی‌ترین بستر تبلیغات تجاری تا چند سال آینده می‌دانند. امروزه جهت تسهیل استفاده عموم از گیف‌ها و ترویج و توسعه هرچه بیشتر آنها، سایت‌های متعددی جهت ساخت گیف از روی عکس و فیلم به صورت رایگان فعالیت می‌کنند که از جمله آن‌ها می‌توان به سایت معروف «جیپی» (Giphy) اشاره کرد.
صدالبته با توجه به استقبال پرشور از فرمت گیف و کارایی آن و مخصوصاً برخی نواقص و معایب آن، رقبای قوی و سازنده‌ای برای گیف‌ها، از جمله APNG‌ها و MNG ها، پا به عرصه نهاده‌اند که هریک نقاط قوت قابل ملاحظه‌ای نسبت به گیف‌ها دارند. از جملهٔ این نقاط قوت قابل ملاحظه می‌توان به پشتیبانی کردن APNGها از تصاویر ۲۴ بیتی و شفافیت ۸ بیتی اشاره کرد که در گیف‌ها امکان‌پذیر نیست. هم‌چنین APNGها قابلیت پشتیبانی از نسل‌های پیشین خود (Backward Compatibility) را نیز دارند.