前言
记录来自于每一次的实际需求;
此次需要做的是将拿到的图片,转png格式下载,看了下数据库返回的地址,有png、svg、jpg格式,我的想法是先通通转base64,再处理成png下载。
一、图片地址转base64
1、先定义一个方法
/**
* 根据图片的url转换对应的base64值
* @param { String } imageUrl 如:http://xxxx/xxx.png
* @returns base64取值
*/
async urlToBase64(imageUrl) {
return new Promise((resolve, reject) => {
let canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
let img = new Image()
img.crossOrigin = 'Anonymous' // 解决Canvas.toDataURL 图片跨域问题
img.src = imageUrl
img.onload = function() {
canvas.height = img.height
canvas.width = img.width
ctx.fillStyle = '#fff' // canvas背景填充颜色默认为黑色
ctx.fillRect(0,0,img.width,img.height)
ctx.drawImage(img, 0, 0) // 参数可自定义
const dataURL = canvas.toDataURL('image/jpeg', 1) // 获取Base64编码
resolve(dataURL)
canvas = null // 清除canvas元素
img = null // 清除img元素
}
img.onerror = function() {
reject(new Error('Could not load image at ' + imageUrl))
}
})
}
2、存储返回的base64,并转为png格式下载
/**
* 下载图片的方法
* @param { String } imageUrl 如:http://xxxx/xxx.png
* @returns base64取值
*/
async upload(item) {
// 此处的src 是图片地址,如: http://xxxx/xxx.png
let { src, name } = item
// 存储base64的值
let base64 = await this.urlToBase64(src)
let link = document.createElement('a')
link.href = base64
link.download = `${name}.png`
link.click()
}
本文转载自: https://blog.csdn.net/vanora1111/article/details/129706194
版权归原作者 vanora1111 所有, 如有侵权,请联系我们删除。
版权归原作者 vanora1111 所有, 如有侵权,请联系我们删除。