aspose.info
FA

Fفرم فایل LIFat

به‌روزرسانی

فایل FLIF چیست؟

FLIF (Free Lossless Image Format) یک فرمت تصویر بدون اتلاف است که از پسوند .flif برای فایل های خود استفاده می کند. FLIF ادعا می کند که از نظر نسبت فشرده سازی عملکرد بهتری از PNG، WebP بدون اتلاف، BPG بدون اتلاف و JPEG 2000 بدون تلفات دارد. FLIF از interlacing پیشرونده استفاده می کند، به همین دلیل هر بارگیری جزئی تصویر می تواند به عنوان یک رمزگذاری با اتلاف برای کل تصویر استفاده شود.

تاریخچه مختصر

FLIF was announced in September 2015, and the alpha version was released in October 2015. در سپتامبر 2016، اولین نسخه پایدار FLIF منتشر شد.

طراحی FLIF

FLIF از یک نوع CABAC (کدگذاری محاسباتی باینری سازگار با زمینه)، MANIAC (کدگذاری حسابی عدد صحیح متا تطبیقی نزدیک به صفر) برای فشرده سازی استفاده می کند. MANIAC یک الگوریتم کدگذاری آنتروپی است که توسط Jon Sneyers و Pieter Wuille توسعه یافته است. در Maniac، زمینه‌ها گره‌هایی از درخت‌های تصمیم هستند که در زمان کدگذاری به صورت پویا یاد می‌گیرند. این باعث می‌شود مدل زمینه برای تصویر خاص‌تر شود و منجر به فشرده‌سازی بهتری شود. FLIF دارای ویژگی های زیر است:

  • از فشرده سازی بدون اتلاف پشتیبانی می کند
  • از فشرده سازی با اتلاف با پیش پردازش رمزگذار پشتیبانی می کند
  • پشتیبانی از مقیاس خاکستری، RGB و RGBA
  • پشتیبانی از عمق رنگ 1 تا 16 بیت در هر کانال
  • پشتیبانی از فایل های interlaced و non-interlaced
  • پشتیبانی از رمزگشایی پیشرونده فایل های نیمه بارگیری شده
  • پشتیبانی از انیمیشن ها
  • از پروفایل های رنگی تعبیه شده ICC، Exif و فراداده XMP پشتیبانی می کند
  • دارای پشتیبانی محدود برای فشرده سازی فایل های خام دوربین (RGGB)

فرمت فایل FLIF

یک فایل FLIF دارای چهار بخش زیر است:

سربرگ اصلی

هدر اصلی شامل ابرداده های اصلی شامل عرض، ارتفاع، عمق رنگ، تعداد فریم ها می باشد.

نوعمقدارتوضیحات
4 بایتFLIFMagic
4 بیت3 = نی هنوز; 4 = من هنوز 5 = ni anim; 6 = i animدرهم، انیمیشن
4 بیت1 = مقیاس خاکستری; 3 = RGB؛ 4 = RGBAتعداد کانال (nb_channels)
1 بایت‘0’,‘1’,‘2’ (‘0’=سفارشی)بایت در هر کانال (Bpc)
varintwidth-1width
varintارتفاع-1ارتفاع
varintnb_frames-2 (فقط در صورت انیمیشن)تعداد فریم (nb_frames)

تکه های فراداده

این بخش حاوی فراداده های غیر پیکسلی مانند Exif/XMP، نمایه رنگی ICC و غیره است که با استفاده از فشرده سازی DEFLATE کدگذاری می شوند. این تکه‌ها مشابه تکه‌های PNG تعریف می‌شوند، با این تفاوت که اندازه چاک با تعداد متغیری از بایت‌ها کدگذاری می‌شود. نام تکه ها می تواند 4 حرف (4 بایت) یا مقدار کمتر از 32 باشد که نشان دهنده یک قطعه غیراختیاری است.

نمونه زیر نمونه ای از چاک های اختیاری است:

نام قطعهتوضیحاتمحتوا (پس از DEFLATE-decompression)
iCCPنمایه رنگ ICCداده های خام نمایه رنگ ICC
eXifمتادیتا Exifسرصفحه Exif\0\0 به دنبال هدر TIFF و داده EXIF
eXmpفراداده XMPXMP موجود در یک xpacket فقط خواندنی بدون بالشتک

کنوانسیون نامگذاری

  • حرف اول: حروف بزرگ برای قسمت های بحرانی و حروف کوچک برای تکه های غیر بحرانی استفاده می شود.
  • حرف دوم: حروف بزرگ برای عمومی و حروف کوچک برای تکه های خصوصی استفاده می شود.
  • حرف سوم: حروف بزرگ برای چاک هایی استفاده می شود که برای نمایش صحیح تصویر مورد نیاز است و حروف کوچک برای نمایش تصویر مهم نیست.
  • حرف چهارم: حروف بزرگ برای چاک هایی استفاده می شود که با خیال راحت می توان کورکورانه کپی کرد. چاک های حروف کوچک به داده های تصویر بستگی دارد.

هدر دوم

این شامل اطلاعات مربوط به رمزگذاری واقعی پیکسل ها است.

نوعتوضیحشرایطمقدار پیش فرض
1 بایتNUL بایت (0x00)، نام قطعه یک جریان بیت FLIF16
uni_int(1,16)بیت در هر پیکسل کانال هاBpc == ‘0’: تکرار(nb_channels)8 اگر Bpc == ‘1’، 16 اگر Bpc == ‘2’
uni_int(0,1)پرچم: alpha_zeronb_channels > 30
uni_int(0,100)تعداد حلقه هاnb_frames > 1
uni_int(0,60_000)تأخیر فریم در msnb_frames > 1: repeat(nb_frames)
uni_int(0,1)پرچم: has_custom_cutoff_and_alpha
uni_int(1,128)cutoffhas_custom_cutoff_and_alpha2
uni_int(2,128)قسم‌دهنده آلفادارای_برش_سفارشی_و_آلفا19
uni_int(0,1)پرچم: has_custom_bitchancehas_custom_cutoff_and_alpha0
؟عزیزعزیز_سفارشی دارد
متغیرتحولات (به زیر مراجعه کنید)
uni_int(1) = 0بیت شاخص: با تبدیلات انجام می شود
uni_int(0,2)پیش‌بینی‌کننده پیکسل نامرئیآلفا_صفر && درهم آمیخته && محدوده آلفا شامل صفر است

کانال

شماره کانالتوضیحات
0قرمز یا خاکستری
1سبز
2آبی
3آلفا

تحولات

نوعتوضیحات
uni_int(1) = 1بیت شاخص: هنوز انجام نشده است
uni_int(0,13)شناسه تبدیل
متغیرداده های تبدیل (بستگی به تبدیل دارد)

تبدیل برای تغییر داده های پیکسل برای فشرده سازی بهتر و پیگیری مقادیر واقعی پیکسل استفاده می شود.

داده پیکسل

این بخش حاوی داده های پیکسل واقعی است که با استفاده از کدگذاری آنتروپی MANIAC کدگذاری شده است. پیکسل ها ممکن است با استفاده از رمزگذاری در هم آمیخته یا غیردرهم رمزگذاری شوند.

روش در هم تنیده

In this method, zoomlevels are defined. Zoomlevel 0 is used for the full image, zoomlevel 1 is used for all even-numbered rows, zoomlevel 2 is used for all even-numbered columns of zoomlevel 1. به عبارت دیگر، هر زوم 2k با شماره زوج، یک نسخه پایین‌نمونه‌شده از تصویر، در مقیاس 1:2^k است. سطوح زوم از بالاترین به پایین ترین کدگذاری می شوند.

روش غیر درهم

در این روش، رمزگذاری درختان MANIAC بلافاصله و سپس رمزگذاری پیکسل ها آغاز می شود.

منابع

همچنین ببینید