在HTML5中,有没有办法将图像数据从getImageData转换为toDataURL?

var pixelData = ctx.getImageData(x - (lineWidth/2), y - (lineWidth/2), lineWidth, lineWidth);

X和Y是鼠标指针在画布上的位置,我正在创建绘图应用程序以从现有画布中获取图像数据并将其复制到新画布中。从图像数据中,我想用createPattern创建模式。知道吗?请帮帮我

最佳答案

您不需要getImageData将canvas1的一部分复制到canvas2上。
(getImageData速度慢)
只需创建一个临时画布并将canvas1的drawinimage部分绘制到临时画布。
然后使用临时画布创建一个用于canvas2的模式。

var pattern=ctx2.createPattern(patternCanvas,'repeat');

如果所有的画布都被用作模式,那就更简单了。那就这样做:
var pattern=ctx2.createPattern(canvas1,'repeat');

示例代码和演示:http://jsfiddle.net/m1erickson/rKxn3/
var canvas1=document.getElementById("canvas1");
var ctx1=canvas1.getContext("2d");
var canvas2=document.getElementById("canvas2");
var ctx2=canvas2.getContext("2d");
var patternCanvas=document.createElement("canvas");
var patternCtx=patternCanvas.getContext("2d");

var img=new Image();
img.onload=start;
img.src="https://dl.dropboxusercontent.com/u/139992952/stackoverflow/facesSmall.png";
function start(){

    ctx1.drawImage(img,0,0);

    patternCanvas.width=80;
    patternCanvas.height=47;
    patternCtx.drawImage(canvas1,0,0,80,47,0,0,80,47);

    var pattern=ctx2.createPattern(patternCanvas,'repeat');
    ctx2.fillStyle=pattern;
    ctx2.fillRect(0,0,canvas2.width,canvas2.height);

}

关于javascript - getImageData转换为toDataURL HTML5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23210643/

10-11 12:59