рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореВрд▓ рдХреИрдкреНрдЪрд╛ рдмрдирд╛рдПрдВред рднрд╛рдЧ 1

рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореБрдЭреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА "рд╕рд╛рдЗрдХрд┐рд▓" рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реБрдИред рддреЛ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд╕реАрдПрдордПрд╕, рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрджрд┐ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВред рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рдореЗрд░рд╛ рдЯрдХрдЯрдХреА рдХреИрдкреНрдЪрд╛ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЖрдк рдореВрд▓ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдХреИрдкреНрдЪрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ: 2 рдбреА-рдЪрд┐рддреНрд░, 3 рдбреА-рдЪрд┐рддреНрд░, рдзреНрд╡рдирд┐ рдХреИрдкреНрдЪрд╛, "рд╕рд╣реА" рддрд╕реНрд╡реАрд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдкред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рд╛рде рдпрд╣ рд╣реБрдЖ рдХрд┐ рдХреИрдкреНрдЪрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдПрдХрддрд░рдлрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреНрд╖реЗрддреНрд░ рдореЗрдВ) рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╣реА рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ, рд╕рд░реНрд╡рд░ рдХреЛ рдореВрд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ! рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдЪреАрдЬрд╝ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдирд╛ "рд╕реНрдорд╛рд░реНрдЯ" рдХреИрдкреНрдЪрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред


рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдЪрд▓реЛ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдлреИрд╢рди рдХреЗ рд▓рд┐рдП рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ рдЕрд░реНрдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ jQuery рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдПрдЧрд╛ред рдХрд╛рд░реНрдп рдХреЛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреЛрдб рдХреА рд╕реБрдВрджрд░рддрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рд╕рдм рдХреБрдЫ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╣ рдЕрдиреБрднрд╡ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
<!DOCTYPE html> <html> <head> <title>Demo NNCaptcha</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript" src="nnCaptcha.js"></script> </head> <body> <div id="nnCaptcha"></div> <script type="text/javascript"> $(document).ready(function(){ //  $("#nnCaptcha").nnCaptcha(); }); </script> </body> </html> 

рдЪрд▓реЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА "рд░рд┐рдХреНрдд" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
 (function($) { //    var methods = { //   init:function(params) { var options = $.extend({}, defaults, params); } }; $.fn.nnCaptcha = function(method){ if (this.length != 1) { $.error('not 1 element!'); return; } //   if ( methods[method] ) { //    ,    //  ,       // this      return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); } else if ( typeof method === 'object' || ! method ) { //     ,    //    return methods.init.apply( this, arguments ); } else { //     $.error( ' "' + method + '"  ' ); } }; })(jQuery); 


рдпрд╣рд╛рдВ jquery рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓рдЧрдЗрди рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЖрдВрддрд░рд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 $("#nnCaptcha").nnCaptcha('reset',1); //  reset   1 (   тАЬтАЭ) 

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

рдЖрдЗрдП рдПрдХ рдЯреЗрдмрд▓ рдмрдирд╛рдХрд░ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЕрдкрдирд╛рдпрд╛ (рддреИрдпрд╛рд░ HTML рдХреЛрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ), рдпрд╣ рдЬрд╛рдирдХрд░ рдХрд┐ $ () рдлрд╝рдВрдХреНрд╢рди рд╕рдХреНрд╖рдо рд╣реИ, рдореИрдВрдиреЗ рдордХреНрдЦреА рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рддрд░реАрдХрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЧрдИ рдереА:
  //     table this.append('<table class="tbCaptcha"><tbody></tbody></table>'); //   2   countCanvas  this.find("table.tbCaptcha").find('tbody') .append(function($){ var tr = $('<tr>'); for (i=0;i<countCanvas;i++) tr.append($('<td>') .append($('<img>') .attr('src', 'nnCaptcha.php?image=get') ) ) return tr; }($) ).append(function($){ var tr = $('<tr>'); for (i=0;i<countCanvas;i++) tr.append($('<td>') .append($('<canvas>') .attr('class', 'captcha') ) ) return tr; }($) ); 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реА рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдХреЛрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХреЗрдВред

рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд: рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред
рдореБрдЦреНрдп рдмрд╛рдд рдХреИрдирд╡рд╛рд╕ рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ:
 var ctx = canvas.getContext("2d"); 

рдФрд░ рдлрд┐рд░ рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 beginPath(); //         moveTo(x, y); //      lineTo(x, y); //       stroke(); //  

рдпрд╣ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдореВрд╕рдбрд╛рдЙрди, рдорд╛рдЙрд╕рдЕрдк, рдореВрд╕рдореЛрд╡ рдХреА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ, рдХреБрдЫ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреЗ рд╣реИрдВ:
  //     canvas this.find("canvas.captcha").each(function(i) { this.width = width; this.height = height; var ctx = this.getContext("2d"); var elem = this; elCanvas[i] = elem; var drawing = false; pixCanvas[i] = createArrayPix(); //      $(this).bind("mousedown.nnCaptcha",function(e){ //    canvas var offset = $(elem).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; //      canvas pixCanvas[i][x][y] = 1; ctx.beginPath(); ctx.strokeStyle = options.selectedColor; ctx.lineWidth = options.selectedWidth; ctx.moveTo(x, y); drawing = true; elem.style.cursor = 'crosshair'; }); $(this).bind("mouseup.nnCaptcha",function(e){ if (drawing) { var offset = $(elem).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; ctx.lineTo(x, y); drawing = false; pixCanvas[i][x][y] = 1; } }); $(this).bind("mousemove.nnCaptcha",function(e){ if (drawing) { var offset = $(elem).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; ctx.lineTo(x, y); ctx.stroke(); ctx.moveTo(x, y); pixCanvas[i][x][y] = 1; } elem.style.cursor = 'crosshair'; }); }); 

рдЕрдм рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ init рддрд░реАрдХрд╛ рддреИрдпрд╛рд░ рд╣реИ, рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗ, рд╣рдо рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
  //    var defaults = { selectedColor:'#000000',selectedWidth:1 }; var countCanvas = 3; var elCanvas = []; var width = 100; var height = 100; var pixCanvas = []; function createArrayPix(){ var a=new Array (width); for (i = 0; i < width; i++) { a[i]=new Array (height); for (j = 0; j < height; j++) { a[i][j] = 0; } } return a; } 

рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпреЗ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛рдПрдВ рддрдм рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдХреИрдирд╡рд╕ рдореЗрдВ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рдерд╛ (рдорд╛рдЙрд╕ рдЪрд▓рд╛ рдЧрдпрд╛) рдмрд╛рдЗрдирд░реА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - pixCanvas [Ncanvas] [x] [y] ("1" - "рдбреНрд░рд╛", "0" - рд╕рдордиреНрд╡рдп) рдХреЛрдИ)
рдмреЗрд╢рдХ, рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PNG рдореЗрдВ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдПрдХ рдЪрд┐рддреНрд░ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛:
 canvas.toDataURL("image/png"); 

рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдмреЗрд╕ 64 рдореЗрдВ рдХреИрдирд╡рд╛рд╕ рдЫрд╡рд┐ рджреЗрддрд╛ рд╣реИ: рдПрдХ URL рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреАрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ PNG рдЫрд╡рд┐ рдХреЛ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рдмрд╛рдЗрдирд░реА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рддреБрд░рдВрдд рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдирд╛ рдЖрд╕рд╛рди рд╣реИ:
 ajax:function(n) { $.post("test.php", { matrix: JSON.stringify(pixCanvas[n]) } ); } 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреЗрд╢рдХ, рдЖрдк рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдлреЙрд░реНрдо рдкрд░ рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЗрдирдкреБрдЯ рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЬреИрд╕рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбрд╛рд▓реЗрдВред
рдЕрдм рд╣рдо рд╕рднреА рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдПрдХ рд╕рд╛рде рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВ:
 (function($) { //    var defaults = { selectedColor:'#000000',selectedWidth:1 }; var countCanvas = 3; var elCanvas = []; var width = 100; var height = 100; var pixCanvas = []; function createArrayPix(){ var a=new Array (width); for (i = 0; i < width; i++) { a[i]=new Array (height); for (j = 0; j < height; j++) { a[i][j] = 0; } } return a; } //    var methods = { //   init:function(params) { //  ,      var options = $.extend({}, defaults, params); //     table this.append('<table class="tbCaptcha"><tbody></tbody></table>'); //   2   countCanvas  this.find("table.tbCaptcha").find('tbody') .append(function($){ var tr = $('<tr>'); for (i=0;i<countCanvas;i++) tr.append($('<td>') .append($('<img>') .attr('src', 'nnCaptcha.php?image=get') ) ) return tr; }($) ).append(function($){ var tr = $('<tr>'); for (i=0;i<countCanvas;i++) tr.append($('<td>') .append($('<canvas>') .attr('class', 'captcha') ) ) return tr; }($) ); //     canvas this.find("canvas.captcha").each(function(i) { this.width = width; this.height = height; var ctx = this.getContext("2d"); var elem = this; elCanvas[i] = elem; var drawing = false; pixCanvas[i] = createArrayPix(); $(this).bind("mousedown.nnCaptcha",function(e){ var offset = $(elem).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; pixCanvas[i][x][y] = 1; ctx.beginPath(); ctx.strokeStyle = options.selectedColor; ctx.lineWidth = options.selectedWidth; ctx.moveTo(x, y); drawing = true; elem.style.cursor = 'crosshair'; }); $(this).bind("mouseup.nnCaptcha",function(e){ if (drawing) { var offset = $(elem).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; ctx.lineTo(x, y); drawing = false; pixCanvas[i][x][y] = 1; } }); $(this).bind("mousemove.nnCaptcha",function(e){ if (drawing) { var offset = $(elem).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; ctx.lineTo(x, y); ctx.stroke(); ctx.moveTo(x, y); pixCanvas[i][x][y] = 1; } elem.style.cursor = 'crosshair'; }); }); return this; }, test:function(n,x,y) { alert(pixCanvas[n][x][y]); }, ajax:function(n) { $.post("test.php", { name: JSON.stringify(pixCanvas[n]) } ); }, //  reset:function(n) { //alert(n); if (n !== undefined){ var c = elCanvas[n]; var ctx = c.getContext("2d"); ctx.clearRect(0, 0, c.width, c.height); pixCanvas[n] = createArrayPix(); } else { $.each(elCanvas,function(i) { var ctx = this.getContext("2d"); ctx.clearRect(0, 0, this.width, this.height); pixCanvas[i] = createArrayPix(); }); } } }; $.fn.nnCaptcha = function(method){ if (this.length != 1) { $.error('not 1 element!'); return; } //   if ( methods[method] ) { //    ,    //  ,       // this      return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); } else if ( typeof method === 'object' || ! method ) { //     ,    //   init return methods.init.apply( this, arguments ); } else { //     $.error( ' "' + method + '"  ' ); } }; })(jQuery); 

рдмреЗрд╢рдХ, рдЕрднреА рднреА "рдХрдЪреНрдЪрд╛" рд╣реИ, рдФрд░ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕рдм рдХреБрдЫ рдЦрддреНрдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд▓рд╛рдЗрд╡ рдХрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ "рджреЛрд╖" рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдФрд░ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рдХреИрдирд╡рд╛рд╕ рдпрд╛ "JSON.stringify ()") рдХреЗ рдХрд╛рд░рдг, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк IE8 рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рд░реАрдореЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рд╕рд╛рдорд╛рдиреНрдпрдХрд░рдг

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЧреЗ рдХреЗ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, 100x100 рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ - 10,000, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреИрдкреНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛ (рд╣рд╛рдБ, рдХрдо рд╕реЗ рдХрдо 50x50), рд╕рдм рдХреБрдЫ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ ...

Google рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ "ANN - рдХреГрддреНрд░рд┐рдо рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ PHP 5.x рдХреЗ рд▓рд┐рдП" рдорд┐рд▓рд╛ред
рдкрд╣рд▓реЗ рдпрд╣ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PHP 5.3 рдореЗрдВ "рд▓рд╛рдЗрд╡" рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ 10 рдЗрдирдкреБрдЯ рдФрд░ 3 рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ 10 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирдореВрдирд╛ рдХрд┐рддрдирд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХреЛ рдпрд╣рд╛рдВ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рд╕рднреА рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз FANN рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ PHP 5.3 рдХреЗ рд╕рд╛рде рд╢рд╛рдпрдж рд╣реА рджреЛрд╕реНрдд рд╣реИ, рджреВрд╕рд░реЗ, рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреЛрдИ рд╕рдВрдХрд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ (рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ), рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдЗрд╕реЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЛрдИ рд╡реАрдбреАрдПрд╕ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдХреИрдкреНрдЪрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ FANN рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ PHP рдХреЛ рдмрд╛рдВрдзрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ...
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдХреИрдкреНрдЪрд╛ рдкрд░ рд╡рд╛рдкрд╕, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рд░реВрдк рдореЗрдВ рдпрд╣ рдмреЙрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ - рдмрд╕ рд╕рд░реНрд╡рд░ рдХреЛ 3 "рд╕рд╣реА" рдмрд╛рдЗрдирд░реА рдореИрдЯреНрд░рд┐рд╕реЗрдЬ рднреЗрдЬреЗрдВ (рдореИрдВ рдЖрдВрдХрдбрд╝рд╛ рдкрд╣рдЪрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ)ред рдпрджреНрдпрдкрд┐, рдмреЗрд╢рдХ, рд╕рд░реНрд╡рд░ рдкрд░, рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ 0.95 рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд┐рдХрд╛рд╕реЛ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмреЙрдЯ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреБрдВрдЬреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ ( рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╣реА), рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдкрдардиреАрдп рдФрд░ рдкреИрдХ рд░реВрдк рдореЗрдВред
рдЕрдм, рднрд▓реЗ рд╣реА рдмреЙрдЯ рдЫрд╡рд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд╣реА рдмрд╛рдЗрдирд░реА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдирд╣реАрдВ рднреЗрдЬ рдкрд╛рдПрдЧрд╛!
рддреЛ рдлрд┐рд░ рддреБрдо рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ:
  1. рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рд╡рд┐рдХреГрддрд┐;
  2. рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ;
  3. рдЦрд╝рддреНрдо рдХрд░рдиреЗ рд╕реЗ рд╕рддреНрд░ рд╕реБрд░рдХреНрд╖рд╛;
  4. рдиреЗрд╕реНрдЯреЗрдб рдЖрдХреГрддрд┐рдпрд╛рдБ (рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ);
рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред
рдмреЗрд╢рдХ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рдХрд╛ рдЧрдарди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрджрд┐рдо рд╕реНрдкреИрдо рдмреЙрдЯреНрд╕ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рдЬрдм рддрдХ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХреИрдкреНрдЪрд╛ рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрдкреИрдо рдмреЙрдЯ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдХреНрд░рд┐рдкреНрдЯреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╣реИрдХрд┐рдВрдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди / рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдЖрдк рдПрдХ рдорд╣рд╛рди рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдирд┐рд╖реНрдХрд░реНрд╖

рд▓реЗрдЦ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреНрд░реВрдб рдирд┐рдХрд▓рд╛, рдлрд┐рд░ рднреА рдХреИрдкреНрдЪрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрднреА рднреА рдЬрд╛рд░реА рд╣реИ рдФрд░ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдирдП рд╡рд┐рдЪрд╛рд░ рд▓рдЧрд╛рддрд╛рд░ рдЙрда рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓реЗрдЦ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ рдХреИрдкреНрдЪрд╛, "рд╕рд╣реА" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕рд╛рде рд╣реА рдЗрд╕реЗ рд╣реИрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рдХреИрдкреНрдЪрд╛ рдкрд░ PS рдЪрд┐рддреНрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Paint'e рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ! рдкреАрдврд╝реА рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрднреА рддрдХ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

Source: https://habr.com/ru/post/In125204/


All Articles