aspose.info
LV

FLIF faila veidlapaat

Atjaunināts

Kas ir FLIF fails?

FLIF (Free Lossless Image Format) ir bezzudumu attēla formāts, kura failiem tiek izmantots paplašinājums .flif. FLIF apgalvo, ka kompresijas pakāpes ziņā pārspēj PNG, bezzudumu WebP, bezzudumu BPG un bezzudumu JPEG 2000. FLIF izmanto progresīvo pīšanos, kuras dēļ jebkura attēla daļēja lejupielāde var tikt izmantota kā visa attēla zudumu kodējums.

Īsa vēsture

FLIF was announced in September 2015, and the alpha version was released in October 2015. 2016. gada septembrī tika izlaista pirmā stabilā FLIF versija.

FLIF dizains

FLIF saspiešanai izmanto CABAC (kontekstam adaptīvā binārā aritmētiskā kodēšana), MANIAC (metaadaptīvā gandrīz nulles veselo skaitļu aritmētiskā kodēšana) variantu. MANIAC ir entropijas kodēšanas algoritms, ko izstrādājuši Jon Sneyers un Pieter Wuille. Programmā MANIAC konteksti ir lēmumu koku mezgli, kas tiek apgūti kodēšanas laikā dinamiski. Tas padara konteksta modeli raksturīgāku attēlam un nodrošina labāku saspiešanu. FLIF ir šādas funkcijas:

  • Atbalsta bezzudumu saspiešanu
  • Atbalsta zudumu saspiešanu ar kodētāja priekšapstrādi
  • Atbalsta pelēktoņu, RGB un RGBA
  • Atbalsta krāsu dziļumu no 1 līdz 16 bitiem katrā kanālā
  • Atbalsta pītās un bezpārlaides failus
  • Atbalsta daļēji lejupielādēto failu pakāpenisku dekodēšanu
  • Atbalsta animācijas
  • Atbalsta iegultos ICC krāsu profilus, Exif un XMP metadatus
  • Ir ierobežots atbalsts kameras neapstrādātu failu saspiešanai (RGGB)

FLIF faila formāts

FLIF failam ir šādas četras daļas:

Galvenā galvene

Galvenajā galvenē ir galvenie metadati, tostarp platums, augstums, krāsu dziļums, kadru skaits.

TipsVērtībaApraksts
4 baitiFLIFMaģija
4 biti3 = ni joprojām; 4 = es joprojām; 5 = ni anim; 6 = i animInterlacing, animation
4 biti1 = pelēktoņu; 3 = RGB; 4 = RGBAKanālu skaits (nb_channels)
1 baits‘0’,‘1’,‘2’ (‘0’=pielāgots)Baiti kanālā (Bpc)
varintplatums-1Platums
varintaugstums-1Augums
varintnb_frames-2 (tikai, ja animācija)Kadru skaits (nb_frames)

Metadatu gabali

Šī daļa satur nepikseļus, piemēram, Exif/XMP metadatus, ICC krāsu profilu utt., kas ir kodēti, izmantojot DEFLATE kompresiju. Šie gabali ir definēti līdzīgi kā PNG gabali ar atšķirību, ka patronas lielums ir kodēts ar mainīgu baitu skaitu. Daļu nosaukumos var būt 4 burti (4 baiti) vai vērtība, kas ir mazāka par 32, kas norāda uz neobligātu gabalu.

Tālāk ir sniegts papildu patronu piemērs.

Daļas nosaukumsAprakstsSaturs (pēc DEFLATE-dekompresijas)
iCCPICC krāsu profilsneapstrādāti ICC krāsu profila dati
eXifExif metadataGalvene Exif\0\0, kam seko TIFF galvene un EXIF dati
eXmpXMP metadatiXMP ietverts tikai lasāmā xpacket bez polsterējuma

Nosaukšanas konvencija

  • Pirmais burts: lielie burti tiek izmantoti kritiskiem burtiem, bet mazie burti tiek izmantoti nekritiskiem gabaliem.
  • Otrais burts: lielie burti tiek izmantoti publiskajiem burtiem, bet mazie tiek izmantoti privātiem gabaliem
  • Trešais burts: lielie burti tiek izmantoti, lai pareizi parādītu attēlu, un mazie burti nav svarīgi attēla parādīšanai.
  • Ceturtais burts: Lielie burti tiek izmantoti patronām, kuras var droši kopēt akli. Mazo burtu patronas ir atkarīgas no attēla datiem.

Otrā galvene

Tas satur informāciju par faktisko pikseļu kodējumu.

TipsAprakstsStāvoklisNoklusējuma vērtība
1 baitsNUL baits (0x00), FLIF16 bitu straumes gabala nosaukums
uni_int(1,16)Biti uz kanālu pikseļuBpc == ‘0’: atkārtojiet(nb_channels)8, ja Bpc == ‘1’, 16, ja Bpc == ‘2’
uni_int(0,1)Atzīmēts: alfa_nullenb_channels > 30
uni_int(0,100)Cilpu skaitsnb_kadri > 1
uni_int(0,60_000)Kadra aizkave msnb_frames > 1: atkārtojiet(nb_frames)
uni_int(0,1)Karogs: has_custom_cutoff_and_alpha
uni_int(1,128)cutoffir_custom_cutoff_and_alpha2
uni_int(2,128)alfa dalītājsir_pielāgots_cutoff_and_alpha19
uni_int(0,1)Atzīmēts: has_custom_bitchancehas_custom_cutoff_and_alpha0
?Bitchanceir_custom_bitchance
mainīgaisTransformācijas (skat. zemāk)
uni_int(1) = 0Indikatora bits: veikts ar transformācijām
uni_int(0,2)Neredzams pikseļu prognozētājsalfa_nulle && pārripots && alfa diapazons ietver nulli

Kanāli

Kanāla numursApraksts
0Sarkans vai Pelēks
1Zaļš
2Zils
3Alfa

Pārvērtības

TipsApraksts
uni_int(1) = 1Indikatora bits: vēl nav izdarīts
uni_int(0,13)Transformācijas identifikators
mainīgaisTransformācijas dati (atkarīgs no transformācijas)

Transformāciju izmanto, lai modificētu pikseļu datus labākai saspiešanai un sekotu faktiskajām pikseļu vērtībām.

Pikseļu dati

Šī daļa satur faktiskos pikseļu datus, kas kodēti, izmantojot MANIAC entropijas kodēšanu. Pikseļus var kodēt, izmantojot rindpārleces vai bezpārlaides kodējumu.

Interlaced metode

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. Citiem vārdiem sakot, katrs pāra skaitļa tālummaiņas līmenis 2k ir samazināta attēla versija mērogā 1:2^k. Tālummaiņas līmeņi ir kodēti no augstākā līdz zemākajam.

Metode bez pīšanas

Izmantojot šo metodi, MANIAC koku kodēšana sākas uzreiz, kam seko pikseļu kodēšana.

Atsauces Nr.

Skatīt arī