ื”ื•ืฆื’ ืคื•ืจืžื˜ ื“ื—ื™ืกืช ืชืžื•ื ื” QOI

ืคื•ืจืžื˜ ื—ื“ืฉ ืฉืœ ื“ื—ื™ืกืช ืชืžื•ื ื” ืงืœ ืžืฉืงืœ ื•ืœืœื ืื•ื‘ื“ืŸ ื”ื•ืฆื’ - QOI (Quite OK Image), ื”ืžืืคืฉืจ ืœื“ื—ื•ืก ืชืžื•ื ื•ืช ื‘ืžื”ื™ืจื•ืช ืจื‘ื” ื‘ืžืจื—ื‘ื™ ื”ืฆื‘ืข 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. ื”ืคืจื•ื™ืงื˜ ืžืคื•ืชื— ืขืœ ื™ื“ื™ Dominic Szablewski, ืžืคืชื— ืžืฉื—ืงื™ื ืขื ื ื™ืกื™ื•ืŸ ื‘ื™ืฆื™ืจืช ืกืคืจื™ื™ื” ืœืคืขื ื•ื— ื•ื™ื“ืื• MPEG1. ื‘ืืžืฆืขื•ืช ืคื•ืจืžื˜ QOI, ื”ืžื—ื‘ืจ ืจืฆื” ืœื”ืจืื•ืช ืฉื ื™ืชืŸ ืœื™ืฆื•ืจ ืืœื˜ืจื ื˜ื™ื‘ื” ื™ืขื™ืœื” ื•ืคืฉื•ื˜ื” ืœืคื•ืจืžื˜ื™ื ืžื•ื“ืจื ื™ื™ื ืฉืœ ืงื™ื“ื•ื“ ืชืžื•ื ื•ืช ืžืกื•ื‘ื›ื™ื ืžื“ื™.

ื‘ื™ืฆื•ืขื™ QOI ืื™ื ื ืชืœื•ื™ื™ื ื‘ืจื–ื•ืœื•ืฆื™ื” ื•ื‘ื˜ื‘ืขื” ืฉืœ ื”ืชืžื•ื ื” ื”ืžืงื•ื“ื“ืช (O(n)). ื”ืงื™ื“ื•ื“ ื•ื”ืคืขื ื•ื— ืžืชื‘ืฆืขื™ื ื‘ืžืขื‘ืจ ืื—ื“ - ื›ืœ ืคื™ืงืกืœ ืžืขื•ื‘ื“ ืคืขื ืื—ืช ื‘ืœื‘ื“ ื•ื ื™ืชืŸ ืœืงื™ื“ื•ื“ ื‘ืื—ืช ืž-4 ื“ืจื›ื™ื, ืฉื ื‘ื—ืจื• ื‘ื”ืชืื ืœืขืจื›ื™ ื”ืคื™ืงืกืœื™ื ื”ืงื•ื“ืžื™ื. ืื ื”ืคื™ืงืกืœ ื”ื‘ื ืขื•ืœื” ื‘ืงื ื” ืื—ื“ ืขื ื”ืงื•ื“ื, ืื–ื™ ืžื•ื ื” ื”ื—ื–ืจื•ืช ืจืง ื’ื“ืœ. ืื ื”ืคื™ืงืกืœ ืชื•ืื ืœืื—ื“ ืžื”ืขืจื›ื™ื ื‘ืžืื’ืจ ื”ืคื™ืงืกืœื™ื ืฉืขื‘ืจื• 64, ืื– ื”ืขืจืš ืžื•ื—ืœืฃ ื‘ื”ื™ืกื˜ ืฉืœ 6 ืกื™ื‘ื™ื•ืช ืœืคื™ืงืกืœ ื”ืงื•ื“ื. ืื ื”ืฆื‘ืข ืฉืœ ื”ืคื™ืงืกืœ ื”ืงื•ื“ื ืžืขื˜ ืฉื•ื ื”, ื”ื”ื‘ื“ืœ ืžืฆื•ื™ืŸ ื‘ืฆื•ืจื” ืงืฆืจื” (ืงื™ื“ื•ื“ ืงืฆืจ ืฉืœ ื”ื”ื‘ื“ืœื™ื ื‘ืจื›ื™ื‘ื™ ื”ืฆื‘ืข ื”ืžืชืื™ืžื™ื ืœ-2,4, 5 ื•-XNUMX ืกื™ื‘ื™ื•ืช). ืื ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืื™ื ื” ื™ืฉื™ืžื”, ืขืจืš ื”-rgba ื”ืžืœื ืžืกื•ืคืง.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”