项目中遇到前端获取到图片外部url,使用该url完成图片下载功能,涉及到跨域下载
const src = 'imgUrl'
const fileName ='imgName'
const canvas = document.createElement('canvas')
const img = document.createElement('img')
// 解决跨域 Canvas 污染问题
img.setAttribute('crossOrigin', 'Anonymous')
//将资源链接赋值过去,才能触发img.onload事件
img.src = src
img.onload = function (e) {
canvas.width = img.width
canvas.height = img.height
const context = canvas.getContext('2d')
//绘制图片
context.drawImage(img, 0, 0, img.width, img.height)
canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height)
//将canvas转base64码,然后创建一个a连接自动下载图片
canvas.toBlob((blob) => {
const link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = fileName
link.click()
})
}