فایل GIF چیست؟
فرمت GIF یا Graphical Interchange Format نوعی تصویر بسیار فشرده است. GIF متعلق به Unisys از الگوریتم فشرده سازی LZW استفاده می کند که کیفیت تصویر را کاهش نمی دهد. برای هر تصویر GIF معمولاً حداکثر 8 بیت در هر پیکسل و حداکثر 256 رنگ در سراسر تصویر مجاز است. برخلاف تصویر JPEG که میتواند تا 16 میلیون رنگ را نمایش دهد و تقریباً محدودیتهای چشم انسان را لمس میکند. زمانی که اینترنت ظهور کرد، گیفها بهترین انتخاب باقی ماندند زیرا به پهنای باند کم نیاز داشتند و برای گرافیکهایی که نواحی ثابت رنگ را مصرف میکنند، سازگار بودند. یک GIF متحرک تصاویر یا فریم های متعددی را در یک فایل واحد ترکیب می کند و آنها را به صورت متوالی نمایش می دهد تا یک کلیپ متحرک یا یک ویدیوی کوتاه تولید کند. محدودیت های رنگی تا 256 برای هر فریم است و احتمالاً برای بازتولید تصاویر و عکس های دیگر با گرادیان رنگ کمترین مناسب هستند.
فرمت فایل GIF
از نظر مفهومی، فایلهای GIF دارای یک ناحیه گرافیکی با اندازه ثابت هستند که با تصویر صفر یا بیشتر پر شده است. برخی از فایلهای GIF، ناحیه یا بلوکهای گرافیکی با اندازه ثابت را به تصاویر فرعی تقسیم میکنند که میتوانند به عنوان فریمهای متحرک در مورد GIF متحرک عمل کنند. فرمت GIF از عمق پیکسل های 1 تا 8 بیت برای ذخیره داده های بیت مپ استفاده می کند. مدل رنگ RGB و داده های پالت همیشه برای ذخیره تصاویر استفاده می شود. بسته به نسخه، یک هدر با طول ثابت (GIF87a یا GIF89a) شروع یک فایل GIF معمولی را مشخص می کند.
در حال حاضر، دو نسخه GIF: 87a و 89a موجود است. اولی فرمت GIF اصلی است در حالی که دومی فرمت GIF جدید است. در این فرمت فایل، مشخصات بلوک ها و ابعاد پیکسل در یک توصیفگر صفحه منطقی با طول ثابت ذکر شده است. وجود و اندازه یک جدول رنگ جهانی ممکن است توسط توصیفگر صفحه مشخص شود، که در صورت وجود جزئیات بیشتر را دنبال می کند. تریلر آخرین بایت فایل است که یک بایت نقطه ویرگول ASCII را در خود جای می دهد. یک طرح بندی معمولی فایل GIF87a به شرح زیر است:
سرتیتر
Header دارای شش بایت است و برای تعیین نوع فایل به عنوان GIF استفاده می شود. اگرچه توصیفگر صفحه نمایش منطقی از هدر واقعی جدا شده است، اما گاهی اوقات به عنوان هدر دوم در نظر گرفته می شود. همان ساختاری که برای ذخیره هدر استفاده می شود ممکن است Logical Screen Descriptor را ذخیره کند. همه فایل های GIF با امضای 3 بایتی شروع می شوند و از کاراکترهای GIF به عنوان یک شناسه استفاده می کنند. نسخه نیز سه بایت است و نسخه فایل GIF را اعلام می کند.
توصیفگر صفحه نمایش منطقی
یک توصیفگر تصویر با طول ثابت، اطلاعات صفحه و رنگ لازم برای ایجاد تصویر GIF را مشخص می کند. فیلدهای Height و Width کوچکترین مقدار وضوح صفحه را در بر می گیرند که برای نمایش داده های تصویر الزامی است. اگر دستگاه نمایشگر قادر به نمایش رزولوشن مشخص شده نباشد، برای نمایش مناسب تصویر به مقیاس بندی نیاز است. اطلاعات نقشه صفحه و رنگ توسط چهار زیرفیلد جدول زیر نمایش داده می شود (در حالی که بیت 0 کم اهمیت ترین بیت است):
بیت | فیلدهای فرعی |
---|---|
0-2 | اندازه جدول رنگ جهانی |
3 | پرچم مرتب سازی جدول رنگی |
4-6 | رزولیشن رنگ |
7 | پرچم جدول رنگی جهانی |
جدول رنگ جهانی
یک جدول سراسری رنگ اختیاری درست بعد از Logical Screen Descriptor قرار می گیرد. این جدول برای فهرست بندی داده های رنگ پیکسل در داخل داده های تصویر نگاشت شده است. در غیاب جدول رنگ جهانی، هر تصویر در فایل GIF از رنگ محلی خود استفاده می کند. اگر جدول رنگ جهانی و محلی وجود ندارد، بهتر است یک جدول رنگی پیش فرض ارائه کنید. مجموعه ای از سه بایتی عناصر جدول رنگ را تشکیل می دهد. هر بایت یک مقدار رنگ RGB را مشخص می کند. رنگهای قرمز، سبز و آبی بهعنوان مقادیر هر عنصر جدول رنگی استفاده میشوند. ورودیهای جدول جهانی رنگ حداکثر 256 ورودی را نشان میدهند و همیشه در توان دو نشان داده میشوند.
داده های تصویر
داده های تصویر یک بایت از نمادهای رمزگذاری نشده را ذخیره می کند و به دنبال آن لیست پیوندی زیر به همراه داده های رمزگذاری شده با LZW قرار می گیرد.
تریلر
تریلر یک بایت از داده را نشان می دهد که آخرین کاراکتر در فایل است. مقدار این بایت به طور دائم 3Bh است و پایان جریان داده را مشخص می کند. هر فایل GIF باید تریلر در آخرین فایل هر فایل داشته باشد.