canvas截图
将图片用canvas绘制出来
<canvas id="myCanvas" width="400" height="400"></canvas>
let canv = document.getElementById('myCanvas');
let ctx = canv.getContext('2d');
let image = new Image();
image.onload = function() {
ctx.drawImage(image, 0, 0);
}
image.src = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.deskcity.org%2Fpic%2F86%2Ff0%2Fe6%2F86f0e6a1c32f2c70845efba5dc4799ba.jpg&refer=http%3A%2F%2Fup.deskcity.org&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632363064&t=64e8536db60e5a4a1f86aed977f60800";
获取截取的图片的imageData
let imageData = {};
image.onload = function() {
ctx.drawImage(image, 0, 0);
imageData = ctx.getImageData(200, 150, 200, 200)
}
Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.at Image.image.onload
image.crossOrigin = '';
使用putImageData将imageData重新绘制canvas
<canvas id="canvas1" width="200" height="200"></canvas>
let cv1 = document.getElementById('canvas1').getContext('2d');
cv1.putImageData(imageData, 0, 0)
- 效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/681b99557b91039ce28746dd7de0b241.png)
toDataURL获取图片的base64
document.getElementById('canvas1').toDataURL("image/png")
完整代码
<div>
<canvas id="myCanvas" width="400" height="400"></canvas>
</div>
<div>
<canvas id="canvas1" width="200" height="200"></canvas>
</div>
let canv = document.getElementById('myCanvas');
let ctx = canv.getContext('2d');
let cv1 = document.getElementById('canvas1').getContext('2d');
let image = new Image();
image.crossOrigin = '';
let imageData = {};
image.onload = function() {
ctx.drawImage(image, 0, 0);
imageData = ctx.getImageData(100, 150, 200, 200);
cv1.putImageData(imageData, 0, 0);
let src1 = document.getElementById('canvas1').toDataURL("image/png");
console.log(src1);
}
image.src = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.deskcity.org%2Fpic%2F86%2Ff0%2Fe6%2F86f0e6a1c32f2c70845efba5dc4799ba.jpg&refer=http%3A%2F%2Fup.deskcity.org&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632363064&t=64e8536db60e5a4a1f86aed977f60800";