js中base64、url和blob之間相互轉(zhuǎn)換的3種方式(詳細(xì)代碼)
url轉(zhuǎn)換為base64
function urlToBase64(url) { return new Promise((resolve, reject) => { let image = new Image(); image.onload = function () { let canvas = document.createElement('canvas'); canvas.width = this.naturalWidth; canvas.height = this.naturalHeight; // 將圖片插入畫布并開始繪制 canvas.getContext('2d').drawImage(image, 0, 0); // result let result = canvas.toDataURL('image/png') resolve(result); }; // CORS 策略,會(huì)存在跨域問題https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror image.setAttribute("crossOrigin", 'Anonymous'); image.src = url; // 圖片加載失敗的錯(cuò)誤處理 image.onerror = () => { reject(new Error('urlToBase64 error')); }; }) }
調(diào)用:
urlToBase64(url).then(res=> { // 轉(zhuǎn)化后的base64圖片地址 console.log('base64', res) });
blob 轉(zhuǎn) url
function blobToBase64(blob) { return new Promise((resolve, reject) => { const fileReader = new FileReader(); fileReader.onload = (e) => { resolve(e.target.result); }; // readAsDataURL fileReader.readAsDataURL(blob); fileReader.onerror = () => { reject(new Error('blobToBase64 error')); }; }); }
調(diào)用:
blobToBase64(blob).then(res => { // 轉(zhuǎn)化后的base64 console.log('base64', res) })
base64 轉(zhuǎn) Blob
function function base64toBlob(dataurl) { var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); }
blob轉(zhuǎn) File
function blobToFile(blob, name) { return new File([blob], name + '.png', { type: blob.type }); }
總結(jié)
到此這篇關(guān)于js中base64、url和blob之間相互轉(zhuǎn)換的3種方式的文章就介紹到這了,更多相關(guān)js base64、url和blob相互轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS代碼實(shí)現(xiàn)table數(shù)據(jù)分頁(yè)效果
這篇文章主要介紹了JS代碼實(shí)現(xiàn)table數(shù)據(jù)分頁(yè)效果的相關(guān)資料,非常不錯(cuò),代碼簡(jiǎn)答易懂,非常實(shí)用,需要的朋友可以參考下2016-05-05JS實(shí)現(xiàn)簡(jiǎn)單的天數(shù)計(jì)算器完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的天數(shù)計(jì)算器,結(jié)合完整實(shí)例形式分析了javascript針對(duì)日期的獲取及天數(shù)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-04-04html頁(yè)面顯示年月日時(shí)分秒和星期幾的兩種方式
在html頁(yè)面中顯示時(shí)間是很常見的,實(shí)現(xiàn)的方法有很多,下面為大家簡(jiǎn)單介紹兩種方式,有需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08原生js實(shí)現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)
本文主要介紹了原生js實(shí)現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01JavaScript實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圣誕游戲
圣誕節(jié)即將來臨,大家都在發(fā)圣誕樹,小編今天就為大家介紹一個(gè)基于JavaScript實(shí)現(xiàn)的圣誕小游戲,文中的示例代碼簡(jiǎn)單易懂,感興趣的可以學(xué)習(xí)一下2021-12-12JavaScript中net::ERR_CONNECTION_REFUSED解決方法大全
在一次測(cè)試中遇到了報(bào)net::ERR_CONNECTION_REFUSED的錯(cuò)誤,五哦一下面這篇文章主要給大家介紹了關(guān)于JavaScript中net::ERR_CONNECTION_REFUSED解決方法的相關(guān)資料,需要的朋友可以參考下2022-10-10js截取video視頻某一幀做封面的簡(jiǎn)單案例(附完整代碼)
最近碰到一個(gè)需求,要求獲取video視頻某一幀做封面圖片,這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于js截取video視頻某一幀做封面的簡(jiǎn)單案例,需要的朋友可以參考下2024-04-04