QOI рдЫрд╡рд┐ рд╕рдЩреНрдХреБрдЪрди рдврд╛рдБрдЪрд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдпреЛ

рдирдпрд╛рдБ рд╣рд▓реНрдХрд╛, рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдЫрд╡рд┐ рдХрдореНрдкреНрд░реЗрд╕рди рдврд╛рдБрдЪрд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫ - QOI (рдПрдХрджрдореИ рдареАрдХ рдЫрд╡рд┐), рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ RGB рд░ RGBA рд░рдЩ рд╕реНрдкреЗрд╕рд╣рд░реВрдорд╛ рдЫрд╡рд┐рд╣рд░реВ рдЫрд┐рдЯреЛ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред PNG рдврд╛рдБрдЪрд╛рд╕рдБрдЧ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛ рдЧрд░реНрджрд╛, C рднрд╛рд╖рд╛рдорд╛ QOI рдврд╛рдБрдЪрд╛рдХреЛ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рдиреНрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬрд╕рд▓реЗ SIMD рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд░ рдЕрд╕реЗрдВрдмрд▓реА рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрди, libpng рд░ stb_image рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рднрдиреНрджрд╛ рдЗрдиреНрдХреЛрдбрд┐рдЩ рдЧрддрд┐рдорд╛ 20-50 рдЧреБрдгрд╛ рдЫрд┐рдЯреЛ рдЫ, рд░ 3ред - рдбрд┐рдХреЛрдбрд┐рдЩ рдЧрддрд┐ рдорд╛ 4 рдЧреБрдгрд╛ рдЫрд┐рдЯреЛред рдХрдореНрдкреНрд░реЗрд╕рди рджрдХреНрд╖рддрд╛рдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛, QOI рдзреЗрд░реИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ libpng рдХреЛ рдирдЬрд┐рдХ рдЫ (рдХреЗрд╣реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рдпреЛ рдереЛрд░реИ рдЕрдЧрд╛рдбрд┐ рдЫ, рд░ рдЕрд░реВрдорд╛ рдпреЛ рдХрдо рдЫ), рддрд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдпреЛ stb_image (20% рд╕рдореНрдордХреЛ рд▓рд╛рдн) рднрдиреНрджрд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЕрдЧрд╛рдбрд┐ рдЫред

C рдорд╛ QOI рдХреЛ рд╕рдиреНрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдбрдХреЛ 300 рд▓рд╛рдЗрдирд╣рд░реВ рдорд╛рддреНрд░ рд╣реЛред рд╕реНрд░реЛрдд рдХреЛрдб MIT рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдердк рд░реВрдкрдорд╛, рдЙрддреНрд╕рд╛рд╣реАрд╣рд░реВрд▓реЗ Go, Zig рд░ Rust рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рдПрдиреНрдХреЛрдбрд░рд╣рд░реВ рд░ рдбрд┐рдХреЛрдбрд░рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рддрдпрд╛рд░ рдЧрд░реЗрдХрд╛ рдЫрдиреНред рдкрд░рд┐рдпреЛрдЬрдирд╛ MPEG1 рднрд┐рдбрд┐рдпреЛ рдбрд┐рдХреЛрдбрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рднрдПрдХреЛ рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдбреЛрдорд┐рдирд┐рдХ Szablewski рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред QOI рдврд╛рдБрдЪрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд▓реЗрдЦрдХрд▓реЗ рджреЗрдЦрд╛рдЙрди рдЪрд╛рд╣рдиреНрдереЗ рдХрд┐ рдпреЛ рдЕрддрд┐-рдЬрдЯрд┐рд▓ рдЖрдзреБрдирд┐рдХ рдЫрд╡рд┐ рдПрдиреНрдХреЛрдбрд┐рдЩ рдврд╛рдБрдЪрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред

QOI рдкреНрд░рджрд░реНрд╢рди рдЗрдиреНрдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐ (O(n)) рдХреЛ рд░рд┐рдЬреЛрд▓реНрдпреБрд╕рди рд░ рдкреНрд░рдХреГрддрд┐рдмрд╛рдЯ рд╕реНрд╡рддрдиреНрддреНрд░ рдЫред рдПрдиреНрдХреЛрдбрд┐рдЩ рд░ рдбрд┐рдХреЛрдбрд┐рдЩ рдПрдЙрдЯреИ рдкрд╛рд╕рдорд╛ рдЧрд░рд┐рдиреНрдЫ - рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫ рд░ рдЕрдШрд┐рд▓реНрд▓реЛ рдкрд┐рдХреНрд╕реЗрд▓рдХреЛ рдорд╛рдирд╣рд░реВрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ 4 рддрд░рд┐рдХрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛рдорд╛ рдПрдиреНрдХреЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрджрд┐ рдЕрд░реНрдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдЕрдШрд┐рд▓реНрд▓реЛрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ рднрдиреЗ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛рдЙрдиреНрдЯрд░ рдорд╛рддреНрд░ рдмрдвреНрдЫред рдпрджрд┐ рдкрд┐рдХреНрд╕реЗрд▓рд▓реЗ 64 рд╡рд┐рдЧрддрдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдмрдлрд░рдорд╛ рдорд╛рдирд╣рд░реВ рдордзреНрдпреЗ рдХреБрдиреИ рдПрдХрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ рднрдиреЗ, рдорд╛рдирд▓рд╛рдИ рд╡рд┐рдЧрддрдХреЛ рдкрд┐рдХреНрд╕реЗрд▓рдорд╛ 6-рдмрд┐рдЯ рдЕрдлрд╕реЗрдЯрджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рдЕрдШрд┐рд▓реНрд▓реЛ рдкрд┐рдХреНрд╕реЗрд▓рдХреЛ рд░рдЩ рдереЛрд░реИ рдлрд░рдХ рдЫ рднрдиреЗ, рднрд┐рдиреНрдирддрд╛рд▓рд╛рдИ рдЫреЛрдЯреЛ рд░реВрдкрдорд╛ рд╕рдЩреНрдХреЗрдд рдЧрд░рд┐рдиреНрдЫ (реи, рек рд░ рел рдмрд┐рдЯреНрд╕рдорд╛ рдлрд┐рдЯ рд╣реБрдиреЗ рд░рдЩ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдорд╛ рднрд┐рдиреНрдирддрд╛рд╣рд░реВрдХреЛ рдЫреЛрдЯреЛ рдПрдиреНрдХреЛрдбрд┐рдЩ)ред рдпрджрд┐ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рд▓рд╛рдЧреВ рднрдПрди рднрдиреЗ, рдкреВрд░реНрдг rgba рдорд╛рди рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди