Et nyt let, tabsfrit billedkomprimeringsformat er blevet introduceret - QOI (Quite OK Image), som giver dig mulighed for meget hurtigt at komprimere billeder i RGB- og RGBA-farverum. Når man sammenligner ydeevnen med PNG-formatet, er den enkelttrådede referenceimplementering af QOI-formatet i C-sprog, som ikke bruger SIMD-instruktioner og montageoptimeringer, 20-50 gange hurtigere i kodningshastighed end bibliotekerne libpng og stb_image, og 3 -4 gange hurtigere i afkodningshastighed. Med hensyn til kompressionseffektivitet er QOI tæt på libpng i de fleste test (i nogle test er det lidt foran, og i andre er det ringere), men generelt er det mærkbart foran stb_image (gevinst på op til 20%).
Referenceimplementeringen af QOI i C er kun 300 linjer kode. Kildekoden distribueres under MIT-licensen. Derudover har entusiaster forberedt implementeringer af indkodere og dekodere i Go-, Zig- og Rust-sprogene. Projektet udvikles af Dominic Szablewski, en spiludvikler med erfaring i at skabe et bibliotek til afkodning af MPEG1-video. Ved hjælp af QOI-formatet ønskede forfatteren at vise, at det er muligt at skabe et effektivt og enkelt alternativ til overkomplicerede moderne billedkodningsformater.
QOI ydeevne er uafhængig af opløsningen og arten af det kodede billede (O(n)). Kodning og afkodning udføres i én omgang - hver pixel behandles kun én gang og kan kodes på en af 4 måder, valgt afhængigt af værdierne af tidligere pixels. Hvis den næste pixel falder sammen med den forrige, så stiger gentagelsestælleren kun. Hvis pixlen matcher en af værdierne i bufferen med 64 tidligere pixel, erstattes værdien med en 6-bit offset til den tidligere pixel. Hvis farven på den forrige pixel er lidt anderledes, er forskellen angivet i en kort form (kort kodning af forskellene i farvekomponenter, der passer ind i 2,4, 5 og XNUMX bits). Hvis optimering ikke er relevant, angives den fulde rgba-værdi.
Kilde: opennet.ru