Π’ΠΎΠ²Π΅Π΄Π΅Π½ Π΅ QOI Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π° Π½Π° слика

Π’ΠΎΠ²Π΅Π΄Π΅Π½ Π΅ Π½ΠΎΠ² лСсСн Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π° Π½Π° слики Π±Π΅Π· Π·Π°Π³ΡƒΠ±ΠΈ - QOI (БосСма Π²ΠΎ Ρ€Π΅Π΄ слика), кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ Π±Ρ€Π·ΠΎ Π΄Π° Π³ΠΈ компрСсиратС сликитС Π²ΠΎ просторитС Π·Π° Π±ΠΎΠΈ RGB ΠΈ RGBA. Кога сС спорСдуваат пСрформанситС со Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ PNG, Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° со Π΅Π΄Π½Π° нишка Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ QOI Π²ΠΎ Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ C, кој Π½Π΅ користи SIMD инструкции ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅, Π΅ 20-50 ΠΏΠ°Ρ‚ΠΈ ΠΏΠΎΠ±Ρ€Π·Π° Π²ΠΎ Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ libpng ΠΈ stb_image, ΠΈ 3 -4 ΠΏΠ°Ρ‚ΠΈ ΠΏΠΎΠ±Ρ€Π·ΠΎ Π²ΠΎ Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅. Π’ΠΎ однос Π½Π° Сфикасноста Π½Π° ΠΊΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ˜Π°, QOI Π΅ блиску Π΄ΠΎ libpng Π²ΠΎ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ тСстови (Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ тСстови Π΅ ΠΌΠ°Π»ΠΊΡƒ ΠΏΠΎΠ½Π°ΠΏΡ€Π΅Π΄, Π° Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π΅ ΠΈΠ½Ρ„Π΅Ρ€ΠΈΠΎΡ€Π΅Π½), Π½ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ²ΠΎ ΠΏΡ€Π΅Π΄ stb_image (Π΄ΠΎΠ±ΠΈΠ²ΠΊΠ° Π΄ΠΎ 20%).

Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° QOI Π²ΠΎ C Π΅ само 300 Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄. Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ сС дистрибуира ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° MIT. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, Π΅Π½Ρ‚ΡƒΠ·ΠΈΡ˜Π°ΡΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ˜Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€ΠΈ ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ΠΈ Π½Π° Ρ˜Π°Π·ΠΈΡ†ΠΈΡ‚Π΅ Go, Zig ΠΈ Rust. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π³ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π° Π”ΠΎΠΌΠΈΠ½ΠΈΠΊ ШаблСвски, Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ Π½Π° ΠΈΠ³Ρ€ΠΈ со искуство Π²ΠΎ создавањС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ MPEG1. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ QOI, Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ сакашС Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС создадС Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° ΠΈ Сдноставна Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° ΠΏΡ€Π΅ΠΌΠ½ΠΎΠ³Ρƒ ΠΊΠΎΠΌΠΏΠ»ΠΈΡ†ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° слики.

Π˜Π·Π²Π΅Π΄Π±Π°Ρ‚Π° Π½Π° QOI Π΅ нСзависна ΠΎΠ΄ Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π°Ρ‚Π° слика (O(n)). ΠšΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ сС Π²Ρ€ΡˆΠ°Ρ‚ Π²ΠΎ Π΅Π΄Π½ΠΎ ΠΏΠΎΠΌΠΈΠ½ΡƒΠ²Π°ΡšΠ΅ - сСкој пиксСл сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π° само Сднаш ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ΄ΠΈΡ€Π° Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ 4-Ρ‚Π΅ Π½Π°Ρ‡ΠΈΠ½ΠΈ, ΠΈΠ·Π±Ρ€Π°Π½ΠΈ Π²ΠΎ зависност ΠΎΠ΄ врСдноститС Π½Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ пиксСли. Ако слСдниот пиксСл сС совпаднС со ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΠΎΡ‚, Ρ‚ΠΎΠ³Π°Ρˆ Π±Ρ€ΠΎΡ˜Π°Ρ‡ΠΎΡ‚ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°ΡšΠ΅ само сС Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°. Ако пиксСлот сС совпаѓа со Π΅Π΄Π½Π° ΠΎΠ΄ врСдноститС Π²ΠΎ Ρ‚Π°ΠΌΠΏΠΎΠ½ ΠΎΠ΄ 64 пиксСли, Ρ‚ΠΎΠ³Π°Ρˆ врСдноста сС Π·Π°ΠΌΠ΅Π½ΡƒΠ²Π° со 6-Π±ΠΈΡ‚Π½Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠΈΠ½Π°Ρ‚ΠΈΠΎΡ‚ пиксСл. Ако Π±ΠΎΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΠΎΡ‚ пиксСл Π΅ ΠΌΠ°Π»ΠΊΡƒ ΠΏΠΎΠΈΠ½Π°ΠΊΠ²Π°, Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π΅ ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° Π²ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ° (ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Π±ΠΎΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ сС Π²ΠΊΠ»ΠΎΠΏΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ 2,4, 5 ΠΈ XNUMX Π±ΠΈΡ‚Π°). Ако ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π΅ Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π»ΠΈΠ²Π°, сС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° цСлосната врСдност Π½Π° rgba.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€