, . .
img -> canvas -> magic -> canvas -> img
:
<canvas>contextimg canvas- get canvas
image data ( [r,g,b,a,r,g,b,a,r,g,..]) - `The magic`®
image data ?canvas <img>
code for working with canvas
var cvs = document.createElement('canvas'),
img = document.getElementsByTagName("img")[0];
cvs.width = img.width; cvs.height = img.height;
var ctx = cvs.getContext("2d");
ctx.drawImage(img,0,0,cvs.width,cvs.height);
var idt = ctx.getImageData(0,0,cvs.width,cvs.height);
getPixel(idt, 852);
getPixelXY(idt,1,1);
setPixelXY(idt,1,1, 0,0,0,255);
6.7, change the image ...
ctx.putImageData(idt,0,0); // 0,0 is xy coordinates
img.src = cvs.toDataURL();
some magic functions
Since image datathis is an array of sequential values r,g,b,a,r,g,.., you need to recalculate the indices. The formula is simple: data[(y*w+x)*4+ch]where chis between 0and 3for r,g,b,a.
function getPixel(imgData, index) {
var i = index*4, d = imgData.data;
return [d[i],d[i+1],d[i+2],d[i+3]]
}
function getPixelXY(imgData, x, y) {
return getPixel(imgData, y*imgData.width+x);
}
function setPixel(imgData, index, r, g, b, a) {
var i = index*4, d = imgData.data;
d[i] = r;
d[i+1] = g;
d[i+2] = b;
d[i+3] = a;
}
function setPixelXY(imgData, x, y, r, g, b, a) {
return setPixel(imgData, y*imgData.width+x, r, g, b, a);
}
so where is canvas dmmit!
document.body.appendChild(cvs);