1、圖片轉(zhuǎn)base64
function getBase64Image(img) {
var canvas = document.createElement("canvas")
canvas.width = img.width
canvas.height = img.height
var ctx = canvas.getContext("2d")
ctx.drawImage(img, 0, 0, img.width, img.height)
var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase()
var dataURL = canvas.toDataURL("image/" + ext)
return dataURL;
}
2、base64轉(zhuǎn)文件流
function btof(data, fileName) {
const dataArr = data.split(",")
const byteString = atob(dataArr[1])
const options = {
type: "image/jpeg",
endings: "native"
}
const u8Arr = new Uint8Array(byteString.length)
for (let i = 0; i < byteString.length; i++) {
u8Arr[i] = byteString.charCodeAt(i)
}
return new File([u8Arr], fileName + ".jpg", options);
}
3、下載圖片
const handleImgDownload = (imgsrc, name) => {
const image = new Image();
// 解決跨域 Canvas 污染問(wèn)題
image.setAttribute('crossOrigin', 'anonymous');
image.onload = function () {
const canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
const context = canvas.getContext('2d');
context.drawImage(image, 0, 0, image.width, image.height);
const url = canvas.toDataURL('image/png'); //得到圖片的base64編碼數(shù)據(jù)
const a = document.createElement('a'); // 生成一個(gè)a元素
const event = new MouseEvent('click'); // 創(chuàng)建一個(gè)單擊事件
a.download = name || 'photo'; // 設(shè)置圖片名稱(chēng)
a.href = url; // 將生成的URL設(shè)置為a.href屬性
a.dispatchEvent(event); // 觸發(fā)a的單擊事件
};
// 在加載的圖片地址上加一個(gè)時(shí)間戳,地址不一樣,瀏覽器就會(huì)重新請(qǐng)求新的資源,就不會(huì)用緩存的
image.src = imgsrc + '?time=' + new Date().getTime();
};
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。