рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдкрд┐рдХреНрд╕рд▓ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП

рдпрд╣ рд▓реЗрдЦ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ HTML рдХреИрдирд╡рд╛рд╕ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдкреНрд░рдмрдВрдзрди рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред рд▓реЗрдЦ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдореВрд▓ phpied.com рдкрд░ред

рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рдмрдВрдзрди


рдПрдХ рдЫрд╡рд┐ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд▓реЗрдирд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЪреИрдирд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдХрд╛ рдореВрд▓реНрдп рдмрджрд▓рдирд╛ рд╣реИ: рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛ рдФрд░ рдЕрд▓реНрдлрд╛ (рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛), рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЖрд░, рдЬреА, рдмреА рдФрд░ рдП рдХрд╣реЗрдВрдЧреЗред
рдЙрджрд╛рд╣рд░рдг: рдХреБрдЫ рдорд╛рди рдмрджрд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, B рдФрд░ G рдмрджрд▓реЗрдВ:
рдпрд╣ рдЖрд░рдЬреАрдмреА (100, 50, 30, 255) рдЖрд░рдЬреАрдмреА (100, 30, 50, 255) рдмрди рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реЗрд░рдлреЗрд░ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

function (r, g, b) { return [r, b, g, 255]; } 


рдпрд╣рд╛рдВ рд╣рдо рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ 255 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо:

рдЫрд╡рд┐

рдореВрд▓ рд╕реЗ:

рдЫрд╡рд┐

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЫрд╡рд┐ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рддрдм рдлрд╝рдВрдХреНрд╢рди рджрд┐рдЦреЗрдЧрд╛:

 function (r, g, b, a, factor) { return [r, g, b, factor]; } 


рдпрд╣рд╛рдВ рд╣рдо рдХрд╛рд░рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЫрд╡рд┐ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЪрд░ рдХрд╛ рдорд╛рди рдПрдХ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдЫрд╡рд┐

рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгред рдпрд╣рд╛рдВ рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд▓рд╛рдЧреВ рд╣реЛ:

 function (r, g, b, a, factor, i) { var total = this.original.data.length; return [r, g, b, factor + 255 * (total - i) / total]; } 


рдпрджрд┐ рд╣рдо рдХрд╛рд░рдХ = 111 рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

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

рдХреИрдирд╡рд╛рд╕


рд╣рдорд╛рд░реЗ рдХреИрдирд╡рд╛рд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 function CanvasImage(canvas, src) { //     var context = canvas.getContext('2d'); var i = new Image(); var that = this; i.onload = function(){ canvas.width = i.width; canvas.height = i.height; context.drawImage(i, 0, 0, i.width, i.height); //    that.original = that.getData(); }; i.src = src; //  this.context = context; this.image = i; } 


рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреГрд╖реНрда рдкрд░ рдХрд╣реАрдВ рд╕реНрдерд┐рдд рдХреИрдирд╡рд╛рд╕ рддрддреНрд╡ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЫрд╡рд┐ url рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐ рдЙрд╕реА рдбреЛрдореЗрди рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:

 var transformador = new CanvasImage( $('canvas'), '/wp-content/uploads/2008/05/zlati-nathalie.jpg' ); 


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

рдЕрдЧрд▓рд╛, рд╣рдо рдХреИрдирд╡рд╛рд╕ рд╕реЗ рдЫрд╡рд┐ рдбреЗрдЯрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛, рдкреНрд░рд╛рдкреНрддрд┐ рдФрд░ рдбрдВрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 3 рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 CanvasImage.prototype.getData = function() { return this.context.getImageData(0, 0, this.image.width, this.image.height); }; CanvasImage.prototype.setData = function(data) { return this.context.putImageData(data, 0, 0); }; CanvasImage.prototype.reset = function() { this.setData(this.original); } 


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

 CanvasImage.prototype.transform = function(fn, factor) { var olddata = this.original; var oldpx = olddata.data; var newdata = this.context.createImageData(olddata); var newpx = newdata.data var res = []; var len = newpx.length; for (var i = 0; i < len; i += 4) { res = fn.call(this, oldpx[i], oldpx[i+1], oldpx[i+2], oldpx[i+3], factor, i); newpx[i] = res[0]; // r newpx[i+1] = res[1]; // g newpx[i+2] = res[2]; // b newpx[i+3] = res[3]; // a } this.setData(newdata); }; 


рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рдПрдХрдорд╛рддреНрд░ рд╢рд░реНрдордирд╛рдХ рдХреНрд╖рдг рд▓реВрдк рдореЗрдВ рд╡реГрджреНрдзрд┐ i + = 4 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрдЯрд╛ getImageData () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП 4 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдХреЗрд╡рд▓ 2 рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИрдВ: рд▓рд╛рд▓ рдФрд░ рдиреАрд▓рд╛, рдФрд░ рдХреЛрдИ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдирд╣реАрдВред рддрдм рдЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдбреЗрдЯрд╛ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 [ 255, 0, 0, 255, 0, 0, 255, 255 ] 


рдХреЙрд▓рдмреИрдХ


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

рдЧреНрд░реЗрд╕реНрдХреЗрд▓

рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рд▓рд╛рд▓, рдиреАрд▓реЗ, рд╣рд░реЗ рд░рдВрдЧ рдХреА рдПрдХ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдФрд╕рдд рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИ:
var agv = (r + g + b) / 3;
рдпрд╣ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓реЗрдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрдЯреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЧреБрдкреНрдд рд╕реВрддреНрд░ рд╣реИ, рдпрд╣ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:

 function(r, g, b) { var avg = 0.3 * r + 0.59 * g + 0.11 * b; return [avg, avg, avg, 255]; } 


рдЫрд╡рд┐

рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдордЫрд▓реА

рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк: рдПрдХ рдЧреНрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд░рдВрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЖрд░рдЬреАрдмреАред рдореИрдВрдиреЗ 100 рд▓рд╛рд▓, 50 рд╣рд░реЗ рдЬреЛрдбрд╝реЗ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдиреНрдп рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

 function(r, g, b) { var avg = 0.3 * r + 0.59 * g + 0.11 * b; return [avg + 100, avg + 50, avg, 255]; } 


рдЫрд╡рд┐

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ:

рдЫрд╡рд┐

рдирдХрд╛рд░рд╛рддреНрдордХ

рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХрд╛ рдорд╛рди 255 рд╕реЗ рдШрдЯрд╛рдПрдВ

 function(r, g, b) { return [255 - r, 255 - g, 255 - b, 255]; } 


рдЫрд╡рд┐

рд╢реЛрд░

рд╢реЛрд░ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдордиреЛрд░рдВрдЬрди рд╣реИ, рд╣рдо-рдлреИрдХреНрдЯрд░ рдФрд░ рдХрд╛рд░рдХ рдХреЗ рдмреАрдЪ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдп рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
 function(r, g, b, a, factor) { var rand = (0.5 - Math.random()) * factor; return [r + rand, g + rand, b + rand, 255]; } 

рдЫрд╡рд┐

рдЖрдкрдХреА рдЪрд╛рд▓


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

 transformador.transform(function(r, g, b, a, factor, i) { //   ... return [r, g, b, a]; }); 


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЫрд╡рд┐ рдХреЛ рдХрд╛рд▓рд╛ рдФрд░ рд╕рдлрд╝реЗрдж рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ (рдЧреНрд░реЗ рд░рдВрдЧ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж, рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ 0,0,0 рдпрд╛ 255,255,255 рд╣реИ)ред

рдпрд╛ рдЖрдк рдХреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред

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


All Articles