圖片轉(zhuǎn)換

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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容