рдлрд┐рд▓реНрдо рдЦреЛрдЬ рдкрд░ рдПрдХ
рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА рд╣реИ рдЬрд┐рд╕реЗ "рд╕реЗрд▓рд┐рдмреНрд░рд┐рдЯреА рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреЛрдЯреЛ рдореЗрдВ рдЕрднрд┐рдиреЗрддрд╛ (рдирд┐рд░реНрджреЗрд╢рдХ, рдкрдЯрдХрдерд╛ рд▓реЗрдЦрдХ, рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд╡реНрдпрдХреНрддрд┐) рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 10 рд╕реЗрдХрдВрдб рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирд┐рдпрдо рд╕рд░рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬрд╛рдирдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рдпрд╣рд╛рдВ рдерд╛ рдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЬрдиреНрдо рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрдж рдХреЛ "рдорджрдж" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдЖ рдерд╛ред
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рд╡реНрдпрдХреНрддрд┐ рдХреА рдЖрдИрдбреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЙрд╕рдХреА рдлреЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ред рд╡реНрдпрдХреНрддрд┐ рдХреА рдЖрдИрдбреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рдиреЗрдорд╛ рдЦреЛрдЬ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдирд╡рд╛рдЪрд╛рд░ рдЦреЛрдЬ рд▓рд╛рдЗрди рдореЗрдВ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдерд╛ (рдкрд╣рд▓реЗ рдЦреЛрдЬ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди - s.kinopoisk.ru рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реБрдИ рдереА, рдпрд╣ рдХрд╛рд░реНрдп рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛)ред рдЕрд▓рдЧ-рдЕрд▓рдЧ, рд▓реЛрдЧреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдлрд╝реЙрд░реНрдо рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
www.kinopoisk.ru/handler_search_people.php?q={query}
рдЬрд╡рд╛рдм рд╕реБрдВрджрд░ JSON рдЖрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ, рдпрд╣ рдлрд╝реЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреЗ рд╣реБрдП рд╣реИрдВред рдЕрдкрд▓реЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝реЛрдЯреЛ рдХреА рдЫреЛрдЯреА рдкреНрд░рддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╡реЗ рдпрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ:
st.kinopoisk.ru/images/sm_actor{id}.jpg
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдПрдХ рдЕрд▓рдЧ рдбреЛрдореЗрди рдкрд░ рд╣реИрдВ (рдФрд░ рдпрд╣ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛)ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
(function(){ function doMain(){ $('img[name="guess_image"]').css({"border":"1px solid black","margin":"10px 0 10px 0"}); $("#answer_table").parent().css({"background":"#f60","padding-left":"130px","padding-bottom":"30px"}); for (var i=0; i<4; ++i){ $('<div><img src="http://st.kinopoisk.ru/images/users/user-no-big.gif" \ class="cheet_image" width=52 hight=82 /></div>') .bind("click", function(){ $(".cheet_image").css({'box-shadow':'','border':''}); }) .bind("load", function() { $(this).css({'box-shadow':'0 0 10px rgba(0,0,0,0.9)',"border":"1px solid red"}); }) .appendTo("#a_win\\["+i+"\\]"); } $('img[name="guess_image"]').bind("load", function(){ doLoader(0); }); } function doLoader(i){ $.getJSON( "/handler_search_people.php", { q: $("#win_text\\["+i+"\\]").html() }, function(data){ $(".cheet_image").eq(i) .attr('src','http://st.kinopoisk.ru/images/sm_actor/'+data[0].id+'.jpg'); if (i < 4) doLoader(++i); } ); } window.addEventListener('DOMContentLoaded', doMain, false); })();
рдЕрдм, рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рд╣реЛрдиреЗ рдкрд░, рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рддрд╕реНрд╡реАрд░реЗрдВ рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВ:
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдиреБрдХрд╕рд╛рди рдореЗрдВ рдпрд╣ рддрдереНрдп рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдиреЗрддреНрд░рд╣реАрди рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВред рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╣рдореЗрдВ - "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЕрдм рд╣рдо рдЫрд╡рд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рддреБрд▓рдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЫрд╡рд┐ рдХреЗ рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЫрд┐рдкреА рд╣реБрдИ рдЫрд╡рд┐ рдФрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдПрдирд╛рд▓реЙрдЧ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИред рд╣реЗрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЪрд┐рддреНрд░ рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ:


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд┐рддреНрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИ - рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЫрд╡рд┐рдпреЛрдВ рдкрд┐рдХреНрд╕реЗрд▓ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдпрд╣рд╛рдВ HTML5 рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ
<canvas>
ред рд╣рдо рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░
getImageData(x, y, width, height)
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЛрдореЗрди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА
рдХреЛрд░ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ:

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦрд┐рдбрд╝рдХреА рд╕рдВрдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ -
postMessage()
рд╡рд┐рдзрд┐ рдФрд░
message
рдШрдЯрдирд╛ред рдЫрд┐рдкреЗ рд╣реБрдП рдлреНрд░реЗрдо рдореЗрдВ, рд╣рдо рдЙрд╕ рдбреЛрдореЗрди рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рддрд╕реНрд╡реАрд░реЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЫрд╡рд┐ рдХреЛ рд╕реНрд╡рдпрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмреЗрд╕ 64 рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореВрд▓ рдлреНрд░реЗрдо рдореЗрдВ рднреЗрдЬреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдХреБрдЫ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдХреИрдирд╡рд╛рд╕ рддрддреНрд╡ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рд╕реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдРрд░реЗ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди
Uint8ClampedArray
(рдПрдХ рд╕рд░рд▓ 8-рдмрд┐рдЯ рд╕рд░рдгреА), рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдорд╛рдВрдХрд┐рдд / deserialize рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдпрд╣ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ base64 рдПрдиреНрдХреЛрдбреЗрдб рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЫрд┐рдкреЗ рд╣реБрдП рдлреНрд░реЗрдо рдореЗрдВ, рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рд▓рдВрдЧрд░ рдореЗрдВ рд╣рдо рдЫрд╡рд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд╝реНрд░реЗрдо рдореЗрдВ рд╣реА, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХрд╛ рдмреЗрд╕ 64 рдХреЛрдб рдкрд╛рддреЗ рд╣реИрдВ:
xhr = new XMLHttpRequest(); xhr.open('GET', '/images/sm_actor/'+hash[0]+'.jpg', false); xhr.overrideMimeType('text/plain;charset=x-user-defined'); xhr.onload = function() { if (xhr.readyState == 4){ var resp = xhr.responseText; var data = 'data:'; data += xhr.getResponseHeader('Content-Type'); data += ';base64,'; var decodedResp = ''; for(var i = 0, L = resp.length; i < L; ++i) decodedResp += String.fromCharCode(resp.charCodeAt(i) & 255); data += btoa(decodedResp); } }; xhr.send(null);
Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЫрд╡рд┐ рднреЗрдЬрдиреЗ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдЕрдкреНрд░рд┐рдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛: рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐ рдЕрднреА рднреА
CORS рдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдХрд╛ рдбреЗрдЯрд╛ рдХреИрдирд╡рд╛рд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕ рдЧрддрд┐рд░реЛрдз рдХрд╛ рддрд░реАрдХрд╛ рдкреГрд╖реНрда рдХреЛрдб рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЫрд╡рд┐ рднреЗрдЬрдирд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ):
if (typeof window.chrome == 'undefined') window.parent.postMessage(hash[1]+"|"+data, "http://www.kinopoisk.ru/"); else { var scr = document.createElement("script"); scr.setAttribute('type','application/javascript'); scr.textContent = "window.parent.postMessage('"+hash[1]+"|"+data+"', 'http://www.kinopoisk.ru/');"; document.body.appendChild(scr); }
рдЕрдм рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдЫрд╡рд┐ рддреБрд▓рдирд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реА рдкрд╕рдВрдж IM.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЧрд┐рд░реА (рд╢рдмреНрдж рдЗрдореЗрдЬ рдореИрдЪ рд╕реЗ, рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдореЗрд╕реЗрдВрдЬрд░ рд╕реЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ)ред рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЙрд╕рдиреЗ рдореБрдЭреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╣рд┐рддреНрдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдерд╛ред рдореИрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдкрд░ рдмрд╕ рдЧрдпрд╛ - CE * рдореИрдЯреНрд░рд┐рдХ рдФрд░ рдЗрд╕рдХреЗ рд╕рд░рд▓рддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, CIE76 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдпрджреНрдпрдкрд┐ рдпрд╣ LAB рд░рдВрдЧ рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп RGB рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдВрдЧреА, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╕рд╛рде рднреА рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдордзреНрдпрд╡рд░реНрддреА XYZ рд╕реНрдерд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ RGB -> LAB рдХрдиреНрд╡рд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред CIE76 рдХрд╛ рд╕рд╛рд░ rms рд░рдВрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдФрд░ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдорд╣рдВрдЧрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕рднреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж)ред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА 4 рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛, рдХрднреА-рдХрднреА 10 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╛рдирддрд╛ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ 96% рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рднреА 75% рд╕реЗ рдХрдо рдХрднреА рдирд╣реАрдВ рд╣реИред
рд╣рдорд╛рд░реЗ рдУрдкреЗрд░рд╛ рдХрд╛ рдЕрдВрддрд┐рдо рддрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреБрд▓рдирд╛ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣реЛрдЧрд╛:
рдХрд╛рд╢, рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд╕рдордп-рд╕рдордп рдкрд░ рддрд╕реНрд╡реАрд░реЗрдВ рдЕрд╡рддрд╛рд░ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЧреИрд▓рд░реА рд╕реЗ рдкреЙрдк рдЕрдк рд╣реЛрддреА рд╣реИрдВред рдлрд┐рд░ рднреА, рдЙрдирдХреЗ рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдг рдлрд╝рд┐рд▓реНрдЯрд░ 93 рд╕реЗ рдКрдкрд░ рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдУрдкреЗрд░рд╛ 12, рдХреНрд░реЛрдо 22 + рдЯреЗрдореНрдкрд░реЙрдиреНрдХреА рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 16.0.1 рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ - рдЕрдиреБрд░реЛрдзрд┐рдд рдЫрд╡рд┐
getImageData
рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЖрдк scriptcripts.org рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВрд╕рд╛рд╣рд┐рддреНрдп
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Google Chrome рдореЗрдВ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
- рдХреИрдирд╡рд╛рд╕ рдПрдХ рд╣реА рдореВрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕
- рдХреИрдирд╡рд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг
- Uint8ClampedArray
- IM.js: рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рддреНрд╡рд░рд┐рдд рдЫрд╡рд┐ рддреБрд▓рдирд╛ рдкрд┐рдХреНрд╕реЗрд▓
- рдЫрд╡рд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдФрд░ рд░реВрдмреА рдореЗрдВ рдЕрдВрддрд░ рдЫрд╡рд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛
- Color_difference рд╕реВрддреНрд░
UPD # 1 рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдВрдбрд░
рдиреЗ рд╕рд╣реА
рдХрд╣рд╛ рд╣реИ, рдПрдХ рдмрдЧ рд╕реВрддреНрд░ рдореЗрдВ
рдХреНрд░реЗрдк рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╡рд┐рднрдХреНрдд, рдЬреЛ рдЕрдзрд┐рдХрддрдо рд░рдВрдЧ рдЕрдВрддрд░ (рдЕрдзрд┐рдХрддрдо рд░рдВрдЧ рдЕрдВрддрд░) рд╣реИред рдЖрдк рдЗрд╕рдХреА рдХрд▓реНрдкрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрджрд┐ рдЖрдк рдПрдХ рдШрди рдХреЗ рд░реВрдк рдореЗрдВ RGB рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдзрд┐рдХрддрдо рд░рдВрдЧ рдХрд╛ рдЕрдВрддрд░ рд╡рд┐рдХрд░реНрдг рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдмрд┐рдЦрд░рд╛рд╡ рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ: 60% - 95%ред рдЕрдм рджреГрд╢реНрдп рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдкрдЯреНрдЯреА рдХреЛ 90% рддрдХ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдлреЛрдЯреЛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред
UPD # 2 nick4fake рдХреЗ
рд╣реИрдмрд░рд╛рдЗрдЬрд╝рд░ рдиреЗ 0 ... 100 ... рдХреЗ рд▓рд┐рдП рд░рд╛рд╢рдирд┐рдВрдЧ рдлреЙрд░реНрдореВрд▓рд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рднреВрд▓
рдЬрд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред
new = (рдкреБрд░рд╛рдирд╛ - min) / (рдЕрдзрд┐рдХрддрдо - min) * 100рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:
Y = (X - 55) / 38 * 100 ред рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдмрд┐рдЦрд░рд╛рд╡ рдФрд░ рднреА рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖рдХрд░ рдЙрди рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧреЛрдВ (рдкреНрд░рдХрд╛рд╢ / рдЕрдВрдзреЗрд░реЗ) рдкрд░ рд╣рд╛рд╡реА рд╣реИрдВ, рдЕрдм рдпрд╣ рд▓рдЧрднрдЧ 30% - 90% рд╣реИред