方法一
downloadIamge(url, name) {
var _this = this
var canvas = document.createElement('canvas')
var img = document.createElement('img')
// 下载有时候会失效 通过改变url链接进行递归
img.onerror = function() {
var timeStamp = +new Date()
_this.downloadIamge(url + '?' + timeStamp, name)
}
img.onload = function(e) {
canvas.width = img.width
canvas.height = img.height
var 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.toBlob((blob) => {
const link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = name
link.click()
}, 'image/png')
}
img.setAttribute('crossOrigin', 'Anonymous')
img.src = url
}
方法二(下载不稳定还是要加入方法一中的img.onerror)
download(imgsrc, name) { // 下载图片地址和图片名
var image = new Image()
// 解决跨域 Canvas 污染问题
image.setAttribute('crossOrigin', 'anonymous')
image.onload = function() {
var canvas = document.createElement('canvas')
canvas.width = image.width
canvas.height = image.height
var context = canvas.getContext('2d')
context.drawImage(image, 0, 0, image.width, image.height)
var url = canvas.toDataURL('image/png') // 得到图片的base64编码数据
var a = document.createElement('a') // 生成一个a元素
var event = new MouseEvent('click') // 创建一个单击事件
a.download = name || 'photo' // 设置图片名称
a.href = url // 将生成的URL设置为a.href属性
a.dispatchEvent(event) // 触发a的单击事件
}
image.src = imgsrc
},
版权声明:本文为i15730384741原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。