aspose.info
EL

Μορφή αρχείου FLIF

Ενημερώθηκε

Τι είναι ένα αρχείο FLIF;

Το FLIF (Free Lossless Image Format) είναι μια μορφή εικόνας χωρίς απώλειες που χρησιμοποιεί την επέκταση .flif για τα αρχεία της. Η FLIF ισχυρίζεται ότι έχει καλύτερη απόδοση από το PNG, το WebP, το BPG χωρίς απώλειες και το JPEG 2000 χωρίς απώλειες όσον αφορά τον λόγο συμπίεσης. Το FLIF χρησιμοποιεί προοδευτική διασύνδεση, λόγω της οποίας οποιαδήποτε μερική λήψη της εικόνας μπορεί να χρησιμοποιηθεί ως κωδικοποίηση με απώλειες για ολόκληρη την εικόνα.

Σύντομη Ιστορία

Το FLIF ανακοινώθηκε τον Σεπτέμβριο του 2015 και η άλφα έκδοση κυκλοφόρησε τον Οκτώβριο του 2015. Τον Σεπτέμβριο του 2016 κυκλοφόρησε η πρώτη σταθερή έκδοση του FLIF.

Σχεδιασμός FLIF

Το FLIF χρησιμοποιεί μια παραλλαγή του CABAC (Δυαδική αριθμητική κωδικοποίηση με προσαρμογή περιβάλλοντος), του MANIAC (μετα-προσαρμοστική αριθμητική κωδικοποίηση σχεδόν μηδενικού αριθμού) για συμπίεση. Το MANIAC είναι ένας αλγόριθμος κωδικοποίησης εντροπίας που αναπτύχθηκε από τους Jon Sneyers και Pieter Wuille. Στο MANIAC, τα περιβάλλοντα είναι κόμβοι δέντρων αποφάσεων που μαθαίνονται κατά το χρόνο κωδικοποίησης δυναμικά. Αυτό κάνει το μοντέλο περιβάλλοντος πιο συγκεκριμένο για την εικόνα και οδηγεί σε καλύτερη συμπίεση. Το FLIF έχει τα ακόλουθα χαρακτηριστικά:

  • Υποστηρίζει συμπίεση χωρίς απώλειες
  • Υποστηρίζει συμπίεση με απώλειες με προεπεξεργασία κωδικοποιητή
  • Υποστηρίζει κλίμακα του γκρι, RGB και RGBA
  • Υποστηρίζει βάθος χρώματος από 1 έως 16 bit ανά κανάλι
  • Υποστηρίζει interlaced και non-interlaced αρχεία
  • Υποστηρίζει προοδευτική αποκωδικοποίηση μερικώς ληφθέντων αρχείων
  • Υποστηρίζει κινούμενα σχέδια
  • Υποστηρίζει ενσωματωμένα χρωματικά προφίλ ICC, μεταδεδομένα Exif και XMP
  • Έχει περιορισμένη υποστήριξη για τη συμπίεση φωτογραφικών αρχείων (RGGB)

Μορφή αρχείου FLIF

Ένα αρχείο FLIF έχει τα ακόλουθα τέσσερα μέρη:

Κύρια κεφαλίδα

Η κύρια κεφαλίδα περιέχει τα κύρια μεταδεδομένα, συμπεριλαμβανομένων του πλάτους, του ύψους, του βάθους χρώματος, του αριθμού των καρέ.

ΤύποςΤιμήΠεριγραφή
4 byte“FLIF”Magic
4 bit3 = ni ακόμα; 4 = εγώ ακόμα; 5 = ni anim; 6 = i animΔιασύνδεση, κινούμενη εικόνα
4 bit1 = Κλίμακα του γκρι; 3 = RGB; 4 = RGBAΑριθμός καναλιών (nb_channels)
1 byte‘0’,‘1’,‘2’ (‘0’=προσαρμοσμένο)Byte ανά κανάλι (Bpc)
varintwidth-1Width
varintύψος-1Ύψος
varintnb_frames-2 (μόνο αν κινούμενα σχέδια)Αριθμός καρέ (nb_frames)

Τεμάχια μεταδεδομένων

Αυτό το τμήμα περιέχει μεταδεδομένα χωρίς εικονοστοιχεία, όπως μεταδεδομένα Exif/XMP, προφίλ χρώματος ICC κ.λπ. που κωδικοποιούνται με συμπίεση DEFLATE. Αυτά τα κομμάτια ορίζονται παρόμοια με τα κομμάτια PNG με τη διαφορά ότι το μέγεθος του τσοκ κωδικοποιείται με έναν μεταβλητό αριθμό byte. Τα ονόματα των κομματιών μπορεί να είναι 4 γράμματα (4 byte) ή μια τιμή κάτω από 32 που υποδεικνύει ένα μη προαιρετικό κομμάτι.

Το παρακάτω είναι ένα παράδειγμα προαιρετικών τσοκ:

Όνομα κομματιούΠεριγραφήΠεριεχόμενο (μετά από DEFLATE-αποσυμπίεση)
iCCPΠροφίλ χρώματος ICCακατέργαστα δεδομένα προφίλ χρώματος ICC
eXifΜεταδεδομένα ExifΕπικεφαλίδα “Exif\0\0” ακολουθούμενη από μια κεφαλίδα TIFF και τα δεδομένα EXIF
eXmpμεταδεδομένα XMPΤο XMP περιέχεται σε ένα xpacket μόνο για ανάγνωση χωρίς padding

Σύμβαση ονομασίας

  • Πρώτο γράμμα: Τα κεφαλαία χρησιμοποιούνται για κρίσιμα και τα πεζά για μη κρίσιμα κομμάτια.
  • Δεύτερο γράμμα: Τα κεφαλαία χρησιμοποιούνται για δημόσια και τα πεζά για ιδιωτικά κομμάτια
  • Τρίτο γράμμα: Το κεφαλαίο χρησιμοποιείται για τα τσοκ που χρειάζονται για να εμφανιστεί σωστά η εικόνα και τα πεζά δεν είναι σημαντικά για την εμφάνιση της εικόνας.
  • Τέταρτο γράμμα: Το κεφαλαίο χρησιμοποιείται για τσοκ που μπορούν να αντιγραφούν με ασφάλεια τυφλά. Τα τσοκ με πεζά γράμματα εξαρτώνται από τα δεδομένα εικόνας.

Δεύτερη κεφαλίδα

Αυτό περιέχει τις πληροφορίες σχετικά με την πραγματική κωδικοποίηση των pixel.

ΤύποςΠεριγραφήΚατάστασηΠροεπιλεγμένη τιμή
1 byteNUL byte (0x00), όνομα κομματιού μιας ροής bit FLIF16
uni_int(1,16)Bits ανά pixel των καναλιώνBpc == ‘0’: repeat(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)άλφα διαιρέτηςhas_custom_cutoff_and_alpha19
uni_int(0,1)Σημαία: has_custom_bitchancehas_custom_cutoff_and_alpha0
?Σκύλαέχει_προσαρμοσμένη_μπίτσα
μεταβλητήΜετασχηματισμοί (βλ. παρακάτω)
uni_int(1) = 0Bit δείκτη: έγινε με μετασχηματισμούς
uni_int(0,2)Αόρατος προγνωστικός εικονοστοιχείωνalpha_zero && interlaced && alpha range περιλαμβάνει μηδέν

Κανάλια

Αριθμός καναλιούΠεριγραφή
0Κόκκινο ή Γκρι
1Πράσινο
2Μπλε
3Άλφα

Μεταμορφώσεις

ΤύποςΠεριγραφή
uni_int(1) = 1Bit δείκτη: δεν έχει ολοκληρωθεί ακόμα
uni_int(0,13)Αναγνωριστικό μετασχηματισμού
μεταβλητήΔεδομένα μετασχηματισμού (εξαρτάται από τον μετασχηματισμό)

Ο μετασχηματισμός χρησιμοποιείται για την τροποποίηση των δεδομένων εικονοστοιχείων για καλύτερη συμπίεση και για την παρακολούθηση των πραγματικών τιμών εικονοστοιχείων.

Δεδομένα pixel

Αυτό το τμήμα περιέχει τα πραγματικά δεδομένα pixel που κωδικοποιούνται με χρήση κωδικοποίησης εντροπίας MANIAC. Τα εικονοστοιχεία μπορούν να κωδικοποιηθούν με χρήση κωδικοποίησης πλεγμένης ή μη.

Πεπλεγμένη μέθοδος

Σε αυτή τη μέθοδο, ορίζονται επίπεδα ζουμ. Το επίπεδο ζουμ 0 χρησιμοποιείται για την πλήρη εικόνα, το επίπεδο ζουμ 1 χρησιμοποιείται για όλες τις ζυγές σειρές, το επίπεδο ζουμ 2 χρησιμοποιείται για όλες τις ζυγές στήλες του επιπέδου ζουμ 1. Με άλλα λόγια, κάθε ζουμ επίπεδο 2k με ζυγό αριθμό είναι μια κατειλημμένη έκδοση του εικόνα, σε κλίμακα 1:2^k. Τα επίπεδα ζουμ κωδικοποιούνται από το υψηλότερο προς το χαμηλότερο.

Μέθοδος χωρίς διαπλοκή

Σε αυτή τη μέθοδο, η κωδικοποίηση των δέντρων MANIAC ξεκινά αμέσως ακολουθούμενη από την κωδικοποίηση των pixel.

Βιβλιογραφικές αναφορές

Δείτε επίσης