aspose.info
HU

FLIF fájlformátum

Frissítve

Mi az a FLIF fájl?

A FLIF (Free Lossless Image Format) egy veszteségmentes képformátum, amely a .flif kiterjesztést használja a fájlokhoz. A FLIF azt állítja, hogy a tömörítési arány tekintetében felülmúlja a PNG, a veszteségmentes WebP, a veszteségmentes BPG-t és a veszteségmentes JPEG 2000-et. A FLIF progresszív átlapolást használ, aminek köszönhetően a kép bármely részleges letöltése veszteséges kódolásként használható a teljes képhez.

Rövid története

A FLIF-et 2015 szeptemberében jelentették be, az alfa verziót pedig 2015 októberében adták ki. 2016 szeptemberében adták ki a FLIF első stabil verzióját.

FLIF Design

A FLIF a CABAC (kontextushoz alkalmazkodó bináris aritmetikai kódolás), a MANIAC (Meta-Adaptive Near-zero Integer Aithmetic Coding) egy változatát használja a tömörítéshez. A MANIAC egy entrópiakódoló algoritmus, amelyet Jon Sneyers és Pieter Wuille fejlesztett ki. A MANIAC-ban a kontextusok a döntési fák csomópontjai, amelyeket a kódolási időben dinamikusan tanulnak meg. Ez a kontextusmodellt képspecifikusabbá teszi, és jobb tömörítést eredményez. A FLIF a következő funkciókkal rendelkezik:

  • Támogatja a veszteségmentes tömörítést
  • Támogatja a veszteséges tömörítést kódoló előfeldolgozással
  • Támogatja a szürkeárnyalatot, az RGB-t és az RGBA-t
  • Támogatja a csatornánként 1-16 bites színmélységet
  • Támogatja a váltottsoros és nem váltott soros fájlokat
  • Támogatja a részben letöltött fájlok progresszív dekódolását
  • Támogatja az animációkat
  • Támogatja a beágyazott ICC színprofilokat, az Exif és XMP metaadatokat
  • Korlátozottan támogatja a nyers kamerafájlok tömörítését (RGGB)

FLIF fájlformátum

A FLIF fájl a következő négy részből áll:

Fő fejléc

A fő fejléc tartalmazza a fő metaadatokat, beleértve a szélességet, magasságot, színmélységet és a keretek számát.

TípusÉrtékLeírás
4 bájt“FLIF”Magic
4 bit3 = ni még; 4 = i még; 5 = ni anim; 6 = i animVáltottsorolás, animáció
4 bit1 = szürkeárnyalatos; 3 = RGB; 4 = RGBACsatornák száma (nb_channels)
1 bájt‘0’,‘1’,‘2’ (‘0’=egyéni)Bájt csatornánként (Bpc)
varintszélesség-1Szélesség
varintmagasság-1Magasság
varintnb_frames-2 (csak animáció esetén)Képek száma (nb_frames)

Metaadat-darabok

Ez a rész nem pixeles, például Exif/XMP metaadatokat, ICC színprofilt stb. tartalmaz, amelyek DEFLATE tömörítéssel vannak kódolva. Ezek a darabok a PNG-darabokhoz hasonlóan vannak definiálva, azzal a különbséggel, hogy a tokmány mérete változó számú bájttal van kódolva. A darabok neve 4 betűből (4 bájtból) vagy 32 alatti értékből állhat, ami nem kötelező darabot jelez.

A következő példa az opcionális tokmányokra:

Részlet neveLeírásTartalom (DEFLATE-dekompresszió után)
iCCPICC színprofilnyers ICC színprofil adatok
eXifExif metadata“Exif\0\0” fejléc, majd egy TIFF-fejléc és az EXIF-adatok
eXmpXMP-metaadatokAz XMP egy csak olvasható xpacketben található, kitöltés nélkül

Elnevezési

  • Első betű: A nagybetűket a kritikus, a kisbetűket pedig a nem kritikus darabokhoz használják.
  • Második betű: A nagybetűket a nyilvános, a kisbetűket pedig a privát darabokhoz használják
  • Harmadik betű: A nagybetűk a kép helyes megjelenítéséhez szükséges tokmányokhoz használatosak, a kisbetűk pedig nem fontosak a kép megjelenítéséhez.
  • Negyedik betű: A nagybetűket a vakon biztonságosan másolható tokmányokhoz használják. A kisbetűs tokmányok a képadatoktól függenek.

Második fejléc

Ez tartalmazza a pixelek tényleges kódolására vonatkozó információkat.

TípusLeírásÁllapotAlapértelmezett érték
1 bájtNUL bájt (0x00), egy FLIF16 bitfolyam csonkneve
uni_int(1,16)Csatorna bit/pixelBpc == ‘0’: ismétlés(nb_channels)8, ha Bpc == ‘1’, 16, ha Bpc == ‘2’
uni_int(0,1)Jelző: alpha_zeronb_channels > 30
uni_int(0,100)Curkok számanb_frame > 1
uni_int(0,60_000)Keretek késleltetése ms-bannb_frames > 1: ismétlés(nb_frames)
uni_int(0,1)Jelző: has_custom_cutoff_and_alpha
uni_int(1,128)cutoffhas_custom_cutoff_and_alpha2
uni_int(2,128)alfa osztóvan_egyéni_vágás_és_alpha19
uni_int(0,1)Jelző: has_custom_bitchancehas_custom_cutoff_and_alpha0
?Bitchancevan_egyedi_esélye
változóÁtalakítások (lásd lent)
uni_int(1) = 0Indikátor bit: transzformációkkal kész
uni_int(0,2)Láthatatlan képpont-előrejelzőalfa_nulla && váltott soros && az alfa tartomány nullát tartalmaz

Csatornák

CsatornaszámLeírás
0Piros vagy Szürke
1Zöld
2Kék
3Alfa

Átváltozások

TípusLeírás
uni_int(1) = 1Indikátor bit: még nem készült el
uni_int(0,13)Transformációs azonosító
változóTransformációs adatok (transzformációtól függően)

Az átalakítást a pixeladatok módosítására használják a jobb tömörítés érdekében, és nyomon követik a ténylegesen előforduló pixelértékeket.

Pixel adatok

Ez a rész a tényleges pixeladatokat tartalmazza MANIAC entrópia kódolással kódolva. A pixelek kódolhatók váltottsoros vagy nem váltottsoros kódolással.

Váltottsoros módszer

Ebben a módszerben a nagyítási szinteket határozzák meg. A 0-s nagyítási szint a teljes képhez, az 1-es nagyítási szint minden páros sorhoz, a 2-es nagyítási szint az 1-es nagyítási szint minden páros számú oszlopához használatos. Más szóval, minden páros számú 2k-s nagyítási szint a kép, 1:2^k méretarányban. A nagyítási szintek a legmagasabbtól a legalacsonyabbig vannak kódolva.

Nem váltott soros módszer

Ennél a módszernél a MANIAC fák kódolása azonnal megkezdődik, majd a képpontok kódolása következik.

Referenciák

Lásd még