给定画布 2D 上下文,如何从图像的指定边界创建图像?
例如,假设我有一个高度和宽度为 100 的画布context
,我想创建一个从坐标25, 25
到75, 75
的新图像。
由于toDataURL()
只能将整个画布转换为图像,因此您需要先剪辑图像。
创建一个临时画布 - 下面是一个将所有内容包装在一个可重用函数中的示例:
function getImageFromRegion(canvas, x, y, w, h) {
var tmpCanvas = document.createElement('canvas'),
ctx = tmpCanvas.getContext('2d');
tmpCanvas.width = w;
tmpCanvas.height = h;
ctx.drawImage(canvas, x, y, w, h, 0, 0, w, h);
//ctx.drawImage(canvas, -x, -y); /// can be used as well..
return tmpCanvas.toDataURL();
}
现在你只需调用该函数:
var dataUri = getImageFromRegion(canvas, 25, 25, 50, 50);
并且您的dataUri
将仅包含该区域的图像。
如果您不是toDataURL()
的意思,那么只需返回tmpCanvas
而不调用toDataURL()
,您可以将新画布用作图像,或者只是使用此处用于剪辑的带有drawImage()
的单行。
你需要使用 drawImage() 函数。更多关于 drawInfo() 的信息