aspose.info
HE

פורמט קובץ FLIF

עודכן

מהו קובץ FLIF?

FLIF (Free Lossless Image Format) הוא פורמט תמונה ללא אובדן המשתמש בסיומת .flif עבור הקבצים שלו. FLIF טוענת שהוא מתעלה על PNG, ללא הפסדים WebP, BPG ללא הפסדים ו-JPEG 2000 ללא הפסדים מבחינת יחס הדחיסה. FLIF משתמש בשזירה פרוגרסיבית, שבגללה כל הורדה חלקית של התמונה יכולה לשמש כקידוד אובדן של התמונה כולה.

היסטוריה קצרה

FLIF הוכרזה בספטמבר 2015, וגרסת האלפא שוחררה באוקטובר 2015. בספטמבר 2016 שוחררה הגרסה היציבה הראשונה של FLIF.

עיצוב FLIF

FLIF משתמש בגרסה של CABAC (קידוד אריתמטי בינארי מותאם להקשר), MANIAC (Meta-Adaptive Near-zero Integer Arithmetic Coding) לצורך דחיסה. MANIAC הוא אלגוריתם קידוד אנטרופיה שפותח על ידי ג’ון סניירס ופיטר ויי. ב-MANIAC, ההקשרים הם צמתים של עצי החלטה הנלמדים בזמן הקידוד באופן דינמי. זה הופך את מודל ההקשר ליותר ספציפי לתמונה ומביא לדחיסה טובה יותר. ל-FLIF יש את התכונות הבאות:

  • תומך בדחיסה ללא אובדן
  • תומך בדחיסה אובדנית עם עיבוד מקדים של מקודד
  • תומך בגווני אפור, RGB ו-RGBA
  • תומך בעומק צבע של 1 עד 16 סיביות לכל ערוץ
  • תומך בקבצים משולבים ולא משולבים
  • תומך בפענוח פרוגרסיבי של קבצים שהורדו חלקית
  • תומך באנימציות
  • תומך בפרופילי צבע משובצים של ICC, מטא נתונים של Exif ו-XMP
  • בעל תמיכה מוגבלת בדחיסת קבצי מצלמה גולמיים (RGGB)

פורמט קובץ FLIF

לקובץ FLIF יש את ארבעת החלקים הבאים:

כותרת ראשית

הכותרת הראשית מכילה את המטא נתונים הראשיים כולל הרוחב, הגובה, עומק הצבע, מספר הפריימים.

סוגערךתיאור
4 בתים“FLIF”קסם
4 סיביות3 = ni still; 4 = אני עדיין; 5 = ni anim; 6 = i animשזירה, אנימציה
4 סיביות1 = גווני אפור; 3 = RGB; 4 = RGBAמספר ערוצים (nb_channels)
1 byte‘0’,‘1’,‘2’ (‘0’=custom)בייטים לערוץ (Bpc)
varintwidth-1width
varintheight-1גובה
varintnb_frames-2 (רק אם אנימציה)מספר פריימים (nb_frames)

נתחי מטא נתונים

חלק זה מכיל לא פיקסלים כמו מטא נתונים של Exif/XMP, פרופיל צבע ICC וכו’ המקודד באמצעות דחיסה DEFLATE. נתחים אלו מוגדרים באופן דומה לנתחי PNG כשההבדל הוא שגודל הצ’אק מקודד במספר משתנה של בתים. שמות הנתחים יכולים להיות 4 אותיות (4 בתים) או ערך מתחת ל-32 המציין נתח לא אופציונלי.

להלן דוגמה של צ’אקים אופציונליים:

שם נתחתיאורתוכן (לאחר DEFLATE-decompression)
iCCPפרופיל צבע ICCנתוני פרופיל צבע גולמי של ICC
eXifExif metadataכותרת “Exif\0\0” ואחריה כותרת TIFF ונתוני EXIF
eXmpXMP metadataXMP הכלול בתוך xpacket לקריאה בלבד ללא ריפוד

אמנת שמות

  • אות ראשונה: אות גדולה משמשת עבור קריטי ואותיות קטנות משמשות עבור נתחים לא קריטיים.
  • אות שנייה: אות גדולה משמשת לציבור ואותיות קטנות משמשות לנתחים פרטיים
  • אות שלישית: אות גדולה משמשת לצ’אקים הדרושים כדי להציג את התמונה בצורה נכונה ואותיות קטנות לא חשובות להצגת התמונה.
  • אות רביעית: אותיות רישיות משמשות לצ’אקים שניתן להעתיק בבטחה בצורה עיוורת. צ’אקים קטנים תלויים בנתוני התמונה.

כותרת שנייה

זה מכיל את המידע לגבי הקידוד בפועל של הפיקסלים.

סוגתיאורמצבערך ברירת מחדל
1 byteNUL byte (0x00), שם נתח של זרם סיביות FLIF16
uni_int(1,16)סיביות לכל פיקסל של הערוציםBpc == ‘0’: repeat(nb_channels)8 if Bpc == ‘1’, 16 if 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)cutoffיש_cutoff_and_alpha_מותאם אישית2
uni_int(2,128)מחלק אלפאיש_חותך_מותאם אישית_ו_אלפא19
uni_int(0,1)דגל: has_custom_bitchancehas_custom_cutoff_and_alpha0
?Bitchanceיש_כלבה_מותאמת אישית
משתנהטרנספורמציות (ראה להלן)
uni_int(1) = 0סיבית אינדיקטור: נעשה עם טרנספורמציות
uni_int(0,2)מנבא פיקסלים בלתי נראיםאלפא_אפס && משולב && טווח אלפא כולל אפס

ערוצים

מספר ערוץתיאור
0אדום או אפור
1ירוק
2כחול
3אלפא

טרנספורמציות

סוגתיאור
uni_int(1) = 1סיבית אינדיקטור: עדיין לא נעשה
uni_int(0,13)מזהה טרנספורמציה
משתנהנתוני טרנספורמציה (תלוי בטרנספורמציה)

טרנספורמציה משמשת לשינוי נתוני פיקסלים לדחיסה טובה יותר וכדי לעקוב אחר ערכי הפיקסלים המתרחשים בפועל.

נתוני פיקסלים

חלק זה מכיל את נתוני הפיקסלים בפועל המקודדים באמצעות קידוד אנטרופיה של MANIAC. הפיקסלים עשויים להיות מקודדים באמצעות קידוד שזור או לא שזור.

שיטה משולבת

בשיטה זו, רמות זום מוגדרות. רמת זום 0 משמשת לתמונה המלאה, רמת זום 1 משמשת עבור כל השורות עם מספר זוגי, רמת זום 2 משמשת עבור כל העמודות הזוגיות של רמת זום 1. במילים אחרות, כל רמת זום זוגית 2k היא גרסה עם דגימה מטה של תמונה, בקנה מידה 1:2^k. רמות הזום מקודדות מהגבוהה לנמוכה ביותר.

שיטה לא משולבת

בשיטה זו, הקידוד של עצי ה-MANIAC מתחיל מיד ולאחריו הקידוד של הפיקסלים.

הפניות

ראו גם