
рдореИрдВ рдЖрдкрдХреЛ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдЬреЛ рдореИрдВрдиреЗ рдХреИрдирд╡рд╛рд╕ рд╕реЗ рдЬреАрдЖрдИрдПрдл рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХреА рдереАрдВред
рдпрд╣рд╛рдВ, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдФрд░ рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдореЗрдЬ рдХреНрд╡рд╛рдВрдЯрд┐рдЬрд╝реЗрд╢рди рдХреЛрдб (рдпрд╛рдиреА рдкреИрд▓реЗрдЯ рдХреЛ 256 рд░рдВрдЧреЛрдВ рдХреЛ рдХрдо рдХрд░рдирд╛) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреБрдЫ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рднреА рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд╕рд░реНрд╡рд░ рднрд╛рд╖рд╛рдПрдБ, рдЬреИрд╕реЗ рдХрд┐ PHP, C #, JAVA, рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫрд╡рд┐ рд╕рдВрдкрд╛рджрдХ рд╣реИ рдЬреЛ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ jpg рдФрд░ png рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдмрджрд╕реВрд░рдд рд╣реИред рдпрд╣ рдЙрд╕ рдЖрд╡реЗрджрди рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реБрдВрджрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреВрд░рд╛ рдЖрд╡реЗрджрди рдЬрд╡рд╛рд╕реНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣реЛред
рдИрдВрдЯреЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░реЛ
рдЬреЗрдкреАрдИрдЬреА рдпрд╛ рдкреАрдПрдирдЬреА рдХреЛ рдХреИрдирд╡рд╕ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
canvas.toDataURL(mime)
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдмреЗрд╕ 64 рдбрд╛рдЯреБрд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧрд╛, рдЬреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╕рд╛рдиреА рд╕реЗ img рдЯреИрдЧ рдХреЗ src рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рдЗрдо рдкреИрд░рд╛рдореАрдЯрд░ "рдЗрдореЗрдЬ / рдкреАрдПрдирдЬреА" рдпрд╛ "рдЗрдореЗрдЬ / рдЬреЗрдкреАрдИрдЬреА" рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк "рдЫрд╡рд┐ / gif" рдпрд╛ "рдЫрд╡рд┐ / bmp" рдХреЛ рдорд╛рдЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдЕрднреА рднреА PNG рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрдЧрд╛ред
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╣ рдкрд░ рдХреБрдЫ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдкрд░ рд╣рд╛рде рдорд┐рд▓рд╛ред
рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛, рдореБрдЭреЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдХреЛрдб рдорд┐рд▓рд╛ рдЬреЛ BMP рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ:
www.nihilogic.dk/labs/canvas2imageрдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдирд┐рдХрд╛рд▓ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ GIF рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди GIF рдХреЗ рд╕рд╛рде рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рдерд╛ред
рдПрдВрдЯреАрдореИрдЯрд░ 15 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓реАрдб "рдХреИрдирд╡рд╛рд╕ рд╕реЗ рд▓реЗрдХрд░ рдЬрд┐рдлрд╝" рдереАрдо рдкрд░ рд▓рдЧрднрдЧ рд╕рднреА рдЦреЛрдЬреЗрдВ:
github.com/antimatter15/ssgifрдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдЖрдЬрдорд╛рдпрд╛ред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд▓рд╕ рд╣реИ: рд╡рд╣ рдЕрднреА рднреА рдЬреАрдЖрдИрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдирд┐рдореЗрдЯреЗрдб рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬреЛрд░ рдХреЗрд╡рд▓ рдПрдиреАрдореЗрд╢рди рдкрд░ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдпрд╛ рддреЛ рдЫрд╡рд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдпрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЧрддрд┐ рдирд╣реАрдВ рджреЗрдЦреА рдереАред
antimatter15 (PNG to GIF, 100x16px, 56ms):

antimatter15 (JPEG to GIF, 604x377px, 4564ms):

рдПрдВрдЯреАрдореИрдЯрд░ 15 (GIF, 256x256px, 1052ms рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА PNG):

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рдХреГрдд рд░рдВрдЧ рд╣реИрдВред рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИред
рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдЦрд╝рд┐рд░реА рддрд╕реНрд╡реАрд░ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖред рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ PNG рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢реА рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдереАред рдХреИрдирд╡рд╛рд╕ RGBA рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рддреАрди рд░рдВрдЧ рдФрд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХрд╛ рд╕реНрддрд░ред рд▓реЗрдХрд┐рди рдПрдВрдЯреАрдореИрдЯрд░ 15 рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗрд╡рд▓ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╕реНрддрд░ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реИред
рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдореЗрдВ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрдирд╡рд╕ 2image рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕реНрддрд░ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдХреИрдирд╡рд╛рд╕ 2image (рдмреАрдПрдордкреА рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢реА рдкреАрдПрдирдЬреА, 256x256px):

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рднреА рд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрд▓реНрдлрд╝рд╛ рдмрд╛рдЗрдЯ рдХреЛ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдХреИрдирд╡рд╕ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреА рдЦреЛрдЬреЛрдВ рдиреЗ рдореБрдЭреЗ рдУрдордЧрд┐рдлрд╝ (GIF 89a рдПрдирдХреЛрдбрд░ рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдПрдиреАрдореЗрд╢рди рдФрд░ рд╕рдВрдкреАрдбрд╝рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛:
github.com/deanm/omggifрдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкрд┐рдХреНрд╕реЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрдХрд░, рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдкреИрд▓реЗрдЯ (рд░рдВрдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА) рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдПрдХ рдлреНрд░реЗрдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдкреИрд▓реЗрдЯ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред
рдкреИрд▓реЗрдЯ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдпрд╣ рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдПрдВрдЯреАрдореИрдЯрд░ 15 рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ NeuQuant.js рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдереАред рдУрдордЧрд┐рдл рдореЗрдВ рдХреЛрдИ рдорд╛рддреНрд░рд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдИ рдорд╛рддреНрд░рд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдУрдордЧрд┐рдлрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЕрдм GIF рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг рдХрд╛рд░реНрдп рдореБрдЭреЗ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдЦреБрдж рд╣реА рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред
рдПрдХ рдкреИрд▓реЗрдЯ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо
рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ 4 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛:
- рдкреИрд▓реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдХреНрд╕реЗрд▓ рдЦреЛрдЬреЗрдВред
- рдЙрди рд░рдВрдЧреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ рдЬреЛ рдкреИрд▓реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред
- рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреИрд▓реЗрдЯ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдкреИрд▓реЗрдЯ рд╕реЗ рдирд┐рдХрдЯрддрдо рд░рдВрдЧ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ
- рдкреИрд▓реЗрдЯ рдореЗрдВ рд░рдВрдЧ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд┐рдХреНрд╕реЗрд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВред
рд╕реНрдЯреЗрдЬ 1
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓рд╛ рдЪрд░рдг рд╣реИред рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдпрджрд┐ рд╢реЗрд╖ рдЪрд░рдг рдареЛрд╕ рд╣реИрдВ - рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреЗ рджреВрд╕рд░реЗ рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рддреЛ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рдХреБрдЫ рд╕рд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдорд╛рдкрджрдВрдб рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдлреВрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рджреВрд╕рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдмрд╕ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдХрдо рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЙрд╕рдореЗрдВ рд░рдВрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 255 рд╕реЗ рдХрдо рди рд╣реЛ (рдПрдХ рд░рдВрдЧ рд╣рдореЗрд╢рд╛ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрддрд╛ рд╣реИ)ред рдЪреВрдВрдХрд┐ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдирд┐рдХрд▓рд╛ред рд╕рдВрдкреВрд░реНрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ 1500ms рдореЗрдВ рд╕реЗ рдПрдХ рдХреБрддреНрддреЗ рдХреЗ рд╕рд╛рде jpg рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 20ms (рдКрдкрд░ рджреЗрдЦреЗрдВ)ред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЪрд┐рддреНрд░ рдХреЛ рджреЛ рдмрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рдХрдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд░рдВрдЧ рд╡рд┐рдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред
рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрд╛рдЗрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реВрддреНрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рд╣реИрдВ:
рд▓рд╛рд▓ = 0xFF- рдЕрд▓реНрдлрд╛ * (1-рд▓рд╛рд▓ / 0xFF)
рд╣рд░рд╛ = 0xFF- рдЕрд▓реНрдлрд╛ * (1-рд╣рд░рд╛ / 0xFF)
рдиреАрд▓рд╛ = 0xFF- рдЕрд▓реНрдлрд╛ * (1-рдиреАрд▓рд╛ / 0xFF)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рд╕рднреА рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЕрд▓реНрдлрд╛ 0 рд╣реИ, рддреЛ рдпрд╣ рдкрд┐рдХреНрд╕реЗрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЪрд░рдг 2 рдФрд░ 3
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рднреА рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╕рд░рдгреА (рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ) рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдЧрд┐рд░реЗред
рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рдЬрдм рдПрдХ рдирдпрд╛ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреИрд▓реЗрдЯ рд╕реЗ рдирд┐рдХрдЯрддрдо рд░рдВрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рддреНрд░рд┐-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд╕рдордиреНрд╡рдп рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рд▓, рдиреАрд▓реЗ рдФрд░ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдШрдЯрдХ рд░рдВрдЧреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рд░рдВрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рддрд░рд╣ рд╣реИред рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдкреНрд░рд╕рд┐рджреНрдз рдкрд╛рдпрдерд╛рдЧреЙрд░рд┐рдпрди рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:
d = sqrt ((X1 - x2) ^ 2 + (y1 - y2) ^ 2 + (z1 - z2) ^ 2)
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рд╣реИ - рд░рдВрдЧ рдЬреЛ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рдереЗред рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдХрд╛ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдореЗрдВ рдирд┐рдХрдЯрддрдо рд░рдВрдЧ рд╣реИред
рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рдЪрд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЫрд╡рд┐ рдХреЛ рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдЖрдзрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдХреЗ рдЕрдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред 255 рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ 100 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рдлреВрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдг
рд╣рдо рдЙрди рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдореЗрдВ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдореЗрдВ рд░рдВрдЧреЛрдВ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдЕрдВрддрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рдВрдЧ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдФрд░ рдЬрдм рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ 255 рд░рдВрдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рдЪрд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рд╕реНрдЯреЗрдЬ 4
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╣рдо рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд░рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдореЗрдВ рд░рдВрдЧ рд╕реВрдЪрдХрд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд░рдВрдЧ рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рдореЗрдВ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рд╕реЗ рдирд┐рдХрдЯрддрдо рд░рдВрдЧ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди
Javascrpt рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдЗрд╕ рднрд╛рд╖рд╛ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдЬрд┐рд╕рдиреЗ рдЧрддрд┐ рдХреЛ рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред
рджреЛ-рд░рдВрдЧ рд╕реВрддреНрд░ рдЕрдиреБрдХреВрд▓рди
рд╣рдо рджреЛ рд░рдВрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдкрд╛рдпрдерд╛рдЧреЙрд░рд┐рдпрди рдлреЙрд░реНрдореВрд▓рд╛ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рджреВрдВрдЧрд╛ред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рд╕рдмрд╕реЗ рддреЗрдЬ рд╡рд┐рдХрд▓реНрдк рд╣реИ?
рдореИрдВ рд╣рд┐рдЯ рдкрд░реЗрдб рдХреЛ рд╕рдмрд╕реЗ рдзреАрдореЗ рд╕рдВрд╕реНрдХрд░рдг - рд╡рд┐рдХрд▓реНрдк рдирдВрдмрд░ 2 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд╡реИрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдмрд┐рд▓реНрдЯ-рдЗрди Math.pow рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2.5 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк 3rd рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рд╣реА рд╣рд┐рд╕реНрд╕рд╛ Math.pow рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рд╕реЗ рдореИрдВ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИред рдФрд░ рдЪреМрдерд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ, рддреАрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10 рдЧреБрдирд╛ рдзреАрдорд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реВрддреНрд░ рдХреА рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рд░рдВрдЧ рдЕрдВрддрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдк рд╡рд░реНрдЧрдореВрд▓ рдХреА рдЧрдгрдирд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреА рдЧрддрд┐ рдХреЛ 1.5 рдЧреБрдирд╛ рдмрдврд╝рд╛ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдЧреЗ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдЧрддрд┐ рдкрд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдк рд▓рдЧрднрдЧ рд╕рдорд╛рди рдЧрддрд┐ рджреЗрддрд╛ рд╣реИ:
рддреАрди рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдЪрд░рдг рдХреА рддреБрд▓рдирд╛ рддрд╛рд▓рд┐рдХрд╛:
| рдХреБрддреНрддрд╛ | рдЕрд▓реНрдлрд╛ рд░реЛрдорд┐рдпреЛ | рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдЗрдХрди |
---|
Math.sqrt (Math.pow (r1-r2,2) + Math.pow (g1-g2,2) + Math.pow (b1-b2,2)) | 17211ms | 1762ms | 117ms |
Math.sqrt (mypow (r1-r2) + mypow (g1-g2) + mypow (b1-b2)) | 40790ms | 3875ms | 255ms |
Math.sqrt ((r1-r2) * (r1-r2) + (g1-g2) * (g1-g2) + (b1-b2) * (b1-b2)) | 1250ms | 149ms | 14ms |
рджреВрд░реА (рдЖрд░ 1-рдЖрд░ 2, рдЬреА 1-рдЬреА 2, рдмреА 2-рдмреА 2) | 15006ms | 1556ms | 99ms |
(r1-r2) * (r1-r2) + (g1-g2) * (g1-g2) + (b1-b2) * (b1-b2) | 779ms | 104ms | 12ms |
(r = r1-r2) * r + (g = g1-g2) * g + (b = b1-b2) * b | 740ms | 100ms | 10ms |
рдкреИрд▓реЗрдЯ рд╕рд░рдгреА рдЕрдиреБрдХреВрд▓рди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкреИрд▓реЗрдЯ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдВрдЧреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдирдпрд╛ рд░рдВрдЧ рдЬреЛрдбрд╝рдирд╛ рдЗрд╕ рддрд░рд╣ рд╣реБрдЖ:
if(palette.indexOf(color) == -1) palette.push(color);
рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝реЗ рд╕рд░рдгреА рдореЗрдВ, indexOf рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рд░реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦреЛрдЬ рдХрд┐рдП рдЧрдП рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛:
if(!palette[color)) palette[color]=true;
рдореБрдЦреНрдп рдкреИрд▓реЗрдЯ рдХреЛ рднрд░рдиреЗ рдХрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд▓реЗрдЯ рдХреЛ рднрд░рдиреЗ рдкрд░, рдЬреЛ рдореБрдЦреНрдп рдПрдХ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдВрддрд░ 2 рдкрд░рд┐рдорд╛рдг рдХреЗ рдЖрджреЗрд╢ рдереЗред рд╣рд░ рдмрд╛рд░ рдШрдЯрдХ рд░рдВрдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреИрд▓реЗрдЯ рдореЗрдВ рдХреИрд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:
if(!palette[color)) palette[color]={r:red, g:green, b:blue};
рд▓реЗрдХрд┐рди рдкреИрд▓реЗрдЯ рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдорд╛рд░реНрдЧ рдХреЗ рдХрдИ рдЪрдХреНрд░реЛрдВ рдХреЛ рдорд╛рдирддрд╛ рд╣реИ:
for(var color in palette){ var rgb=palette[color]; }
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрдВ:
for(var i=0, n=palette.length; i<n; i++){ var pal=palette[i]; }
рдЗрд╕рд▓рд┐рдП, рдкреИрд▓реЗрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА (рдкреИрд▓реЗрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдкреИрд▓реЗрдЯ рдореЗрдВ рд░рдВрдЧ рд╣реИ, (рдореМрдЬреВрдж) рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
if(!exists[color)){ exists[color]=true; palette.push({c:color, r:red, g:green, b:blue}); } for(var i=0, n=palette.length; i<n; i++){ var pal=palette[i]; }
рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди
рдореИрдВ рдЪрдХреНрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛:
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рдмрд╛рдж рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рд╕реНрдерд┐рддрд┐ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рд▓рдЧрднрдЧ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдЦреБрдж рдХреЗ рд▓рд┐рдП рдиреНрдпрд╛рдпрд╛рдзреАрд╢:
| рдХреБрддреНрддрд╛ | рдЕрд▓реНрдлрд╛ рд░реЛрдорд┐рдпреЛ | рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдЗрдХрди |
---|
(var i = 0, n = palette.length; рдореИрдВ <n; i ++) | 238ms | 51ms | 3,5ms |
(var i = 0; рдореИрдВ <palette.length; i ++) | 244ms | 55ms | 3,5ms |
(var i = 0, pal; рдкрд╛рд▓ = рдкреИрд▓реЗрдЯ [i]; i ++) | 230ms | 54ms | 3,5ms |
рдкрд░рд┐рдгрд╛рдо
PNG to GIF, 100x16px, 35ms:

JPEG to GIF, 604x377px, 1338ms:

GIF рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА PNG, 256x256px, 268ms:

рдореИрдВ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВред рдЪрд┐рддреНрд░ рдПрдВрдЯреАрдореИрдЯрд░ 15 рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдереЗред рдЧрддрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдереАред рд╡реИрд╕реЗ, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрд╛рдЗрдЯ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ(рдХреИрдирд╡рд╕ рдЯреЙрдлрд┐рдЬрдбрд╛рдЯрд╛ рдФрд░ рдХреИрдирд╡рд╕рдкреНрд▓реЗрдЯ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп)
рд╕реНрд░реЛрдд рддрд╕реНрд╡реАрд░реЗрдВрдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдЗрдХрди

рдХреБрддреНрддрд╛

рдЕрд▓реНрдлрд╛ рд░реЛрдорд┐рдпреЛ

рдЕрдм рдореИрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ:
- рдЖрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ!