话不多说代码上解释
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="canvas" style="background-color:pink">
<canvas height="400" class="canvas" id="mycanvas" width="450"></canvas>
</div>
<button>点我下载</button>
</body>
</html>
<script>
var c = document.getElementById("mycanvas");
var ctx = c.getContext("2d");
var can = document.getElementsByTagName("canvas");
function downloadImg (imgSrc , imgName){
let element = document.createElement("a")
element.setAttribute("href",imgSrc)
element.setAttribute("download",imgName)
document.body.appendChild(element)
element.click()
document.body.removeChild(element)
}
var img = new Image()
img.crossOrigin = 'anonymous';
img.src = 'https://img0.baidu.com/it/u=2183933904,3656400248&fm=26&fmt=auto';
img.onload = function(){
ctx.drawImage(img , 10 , 10 ,100 , 100 )
var type = 'image/jpeg';
let imgSrc = can[0].toDataURL(type);
var bin = atob(imgSrc.split(',')[1]);
var buffer = new Uint8Array(bin.length);
for (var i = 0; i < bin.length; i++) {
buffer[i] = bin.charCodeAt(i);
}
var blob = new Blob([buffer.buffer], {type: type});
var url = window.URL.createObjectURL(blob);
var btn = document.querySelector('button')
btn.onclick = function(){
downloadImg(url,'11.png')
downloadImg(imgSrc,'11.png')
}
}
</script>
![在这里插入图片描述](https://img-blog.csdnimg.cn/9da259561f9b4e3192b0e74f92886116.png)