QOI ôfbylding kompresje formaat yntrodusearre

In nij lichtgewicht, ferliesleaze ôfbyldingskompresjeformaat is yntrodusearre - QOI (Hiel OK ôfbylding), wêrtroch jo ôfbyldings heul fluch kinne komprimearje yn 'e RGB- en RGBA-kleurromten. By it fergelykjen fan prestaasjes mei it PNG-formaat, is de single-threaded referinsje-ymplemintaasje fan it QOI-formaat yn C-taal, dy't gjin SIMD-ynstruksjes en assemblage-optimisaasjes brûkt, 20-50 kear rapper yn kodearringsnelheid dan de libpng- en stb_image-biblioteken, en 3 -4 kear flugger yn dekodearjen snelheid. Yn termen fan kompresje-effisjinsje is QOI yn 'e measte tests tichtby libpng (yn guon tests is it wat foarút, en yn oaren is it minderweardich), mar yn' t algemien is it merkber foarút fan stb_image (winst fan oant 20%).

De referinsje ymplemintaasje fan QOI yn C is mar 300 rigels koade. De boarnekoade wurdt ferspraat ûnder de MIT-lisinsje. Derneist hawwe entûsjasters ymplemintaasjes taret fan encoders en decoders yn 'e Go, Zig en Rust-talen. It projekt wurdt ûntwikkele troch Dominic Szablewski, in spultsje-ûntwikkelder mei ûnderfining yn it meitsjen fan in bibleteek foar it dekodearjen fan MPEG1-fideo. Mei it QOI-formaat woe de auteur sjen litte dat it mooglik is om in effektyf en ienfâldich alternatyf te meitsjen foar te komplisearre moderne byldkodearjende formaten.

QOI prestaasje is ûnôfhinklik fan de resolúsje en aard fan de kodearre ôfbylding (O (n)). Kodearring en dekodearring wurde útfierd yn ien pass - elke piksel wurdt mar ien kear ferwurke en kin wurde kodearre op ien fan 4 manieren, selektearre ôfhinklik fan de wearden fan foarige piksels. As de folgjende piksel oerienkomt mei de foarige, dan nimt de werhellingsteller allinich ta. As de piksel oerienkomt mei ien fan 'e wearden yn' e 64 ferline pikselbuffer, dan wurdt de wearde ferfongen troch in 6-bit offset nei de ferline piksel. As de kleur fan 'e foarige piksel wat oars is, wurdt it ferskil yn in koarte foarm oanjûn (koarte kodearring fan' e ferskillen yn kleurkomponinten dy't passe yn 2,4, 5 en XNUMX bits). As optimisaasje net fan tapassing is, wurdt de folsleine rgba-wearde levere.

Boarne: opennet.ru

Add a comment