aspose.info
LT

FLIF failo formaat

Atnaujinta

Kas yra FLIF failas?

FLIF (Free Lossless Image Format) yra be nuostolių vaizdo formatas, kurio failams naudojamas .flif plėtinys. FLIF teigia, kad glaudinimo laipsniu lenkia PNG, be nuostolių WebP, be nuostolių BPG ir be nuostolių JPEG 2000. FLIF naudoja progresyvų persipynimą, dėl kurio bet koks dalinis vaizdo atsisiuntimas gali būti naudojamas kaip viso vaizdo nuostolingas kodavimas.

Trumpa istorija

FLIF was announced in September 2015, and the alpha version was released in October 2015. 2016 m. rugsėjį buvo išleista pirmoji stabili FLIF versija.

FLIF dizainas

FLIF glaudinimui naudoja CABAC (konteksto adaptyvaus dvejetainio aritmetinio kodavimo), MANIAC (meta-adaptive Near-zero Integer Aithmetic Coding) variantą. MANIAC yra entropijos kodavimo algoritmas, kurį sukūrė Jon Sneyers ir Pieter Wuille. MANIAC kontekstai yra sprendimų medžių mazgai, kurie išmokstami dinamiškai koduojant. Dėl to kontekstinis modelis labiau būdingas vaizdams ir geresnis suspaudimas. FLIF turi šias funkcijas:

  • Palaiko be nuostolių suspaudimą
  • Palaiko nuostolingą glaudinimą naudojant kodavimo įrenginio išankstinį apdorojimą
  • Palaiko pilkų tonų, RGB ir RGBA
  • Palaiko spalvų gylį nuo 1 iki 16 bitų viename kanale
  • Palaiko susipynusius ir nepintus failus
  • Palaiko laipsnišką iš dalies atsisiųstų failų dekodavimą
  • Palaiko animacijas
  • Palaiko įterptus ICC spalvų profilius, Exif ir XMP metaduomenis
  • Turi ribotą fotoaparato neapdorotų failų (RGGB) glaudinimo palaikymą

FLIF failo formatas

FLIF failą sudaro šios keturios dalys:

Pagrindinė antraštė

Pagrindinėje antraštėje yra pagrindiniai metaduomenys, įskaitant plotį, aukštį, spalvų gylį, kadrų skaičių.

TipasVertėAprašymas
4 baitaiFLIFMagic
4 bitai3 = ni vis dar; 4 = aš vis dar; 5 = ni anim; 6 = i animInterlacing, animation
4 bitai1 = pilkos spalvos tonai; 3 = RGB; 4 = RGBAKanalų skaičius (nb_channels)
1 baitas‘0’,‘1’,‘2’ (‘0’=priskirtas)Baitai kanale (Bpc)
varintplotis-1Plotis
varintaukštis-1Aukštis
varintnb_frames-2 (tik jei animacija)Kadrų skaičius (nb_frames)

Metaduomenų dalys

Šioje dalyje yra ne pikselių, tokių kaip Exif/XMP metaduomenys, ICC spalvų profilis ir kt., kurie užkoduoti naudojant DEFLATE glaudinimą. Šie gabalai apibrėžiami panašiai kaip PNG gabalai, tačiau skirtumas yra tas, kad griebtuvo dydis yra užkoduotas kintamu baitų skaičiumi. Dalių pavadinimai gali būti sudaryti iš 4 raidžių (4 baitai) arba mažesnė nei 32 reikšmė, nurodanti neprivalomą gabalą.

Toliau pateikiamas pasirenkamų griebtuvų pavyzdys:

Laiko pavadinimasAprašymasTurinys (po DEFLATE-dekompresijos)
iCCPICC spalvų profilisneapdoroti ICC spalvų profilio duomenys
eXifExif metaduomenysExif\0\0 antraštė, po kurios yra TIFF antraštė ir EXIF duomenys
eXmpXMP metaduomenysXMP yra tik skaitomame xpacket be užpildymo

Įvardijimo konvencija

  • Pirmoji raidė: didžiosios raidės naudojamos kritinėms raidėms, o mažosios - nekritinėms dalims.
  • Antra raidė: didžiosios raidės naudojamos viešai, o mažosios - privačioms raidėms
  • Trečia raidė: didžiosios raidės naudojamos griebtuvams, kurių reikia, kad vaizdas būtų rodomas teisingai, o mažosios raidės nėra svarbios, kad vaizdas būtų rodomas.
  • Ketvirtoji raidė: didžiosios raidės naudojamos griebtuvams, kuriuos galima saugiai kopijuoti aklai. Mažųjų raidžių griebtuvai priklauso nuo vaizdo duomenų.

Antroji antraštė

Čia pateikiama informacija apie tikrąjį pikselių kodavimą.

TipasAprašymasBūklėNumatytoji reikšmė
1 baitasNUL baitas (0x00), FLIF16 bitų srauto gabalo pavadinimas
uni_int(1,16)Kanalų bitai pikselyjeBpc == ‘0’: pakartokite(nb_channels)8, jei Bpc == ‘1’, 16, jei Bpc == ‘2’
uni_int(0,1)Žyma: alfa_nulisnb_channels > 30
uni_int(0,100)Kilpų skaičiusnb_frames > 1
uni_int(0,60_000)Kadro delsa msnb_frames > 1: pakartokite(nb_frames)
uni_int(0,1)Žyma: turi_custom_cutoff_and_alpha
uni_int(1,128)ribaturi_priskirtą_ribą_ir_alpha2
uni_int(2,128)alfa daliklisturi_priskirtą_ribą_ir_alpha19
uni_int(0,1)Žyma: turi_custom_bitchancehas_custom_cutoff_and_alpha0
?Bitchanceturi_priskirtą_susitikimą
kintamasisTransformacijos (žr. toliau)
uni_int(1) = 0Indikatoriaus bitas: atliktas su transformacijomis
uni_int(0,2)Nematomo pikselio numatymo priemonėalfa_nulis && persipynęs && alfa diapazonas apima nulį

Kanalai

Kanalo numerisAprašymas
0Raudona arba Pilka
1Žalias
2Mėlyna
3Alfa

Transformacijos

TipasAprašymas
uni_int(1) = 1Indikatoriaus bitas: dar nepadaryta
uni_int(0,13)Transformacijos identifikatorius
kintamasisTransformacijos duomenys (priklauso nuo transformacijos)

Transformacija naudojama pikselių duomenims modifikuoti, kad būtų geresnis suspaudimas, ir sekti faktiškai atsirandančias pikselių reikšmes.

Pikselių duomenys Nr.

Šioje dalyje yra tikrieji pikselių duomenys, užkoduoti naudojant MANIAC entropijos kodavimą. Pikseliai gali būti užkoduoti naudojant persipynusią arba neinterlaced kodavimą.

Sujungimo metodas

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. Kitaip tariant, kiekvienas lyginis 2k mastelio keitimo lygis yra sumažinta vaizdo versija, kurios mastelis yra 1:2^k. Mastelio keitimo lygiai yra užkoduoti nuo aukščiausio iki žemiausio.

Neišsipynęs metodas

Taikant šį metodą, MANIAC medžių kodavimas prasideda iš karto, o po to - pikselių kodavimas.

Nuorodos Nr.

Taip pat žiūrėkite