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 策略,會存在跨域問題https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror
image.setAttribute("crossOrigin", 'Anonymous');
image.src = url;
// 圖片加載失敗的錯誤處理
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS代碼實(shí)現(xiàn)table數(shù)據(jù)分頁效果
這篇文章主要介紹了JS代碼實(shí)現(xiàn)table數(shù)據(jù)分頁效果的相關(guān)資料,非常不錯,代碼簡答易懂,非常實(shí)用,需要的朋友可以參考下2016-05-05
JS實(shí)現(xiàn)簡單的天數(shù)計(jì)算器完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)簡單的天數(shù)計(jì)算器,結(jié)合完整實(shí)例形式分析了javascript針對日期的獲取及天數(shù)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
原生js實(shí)現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)
本文主要介紹了原生js實(shí)現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
JavaScript實(shí)現(xiàn)一個簡單的圣誕游戲
圣誕節(jié)即將來臨,大家都在發(fā)圣誕樹,小編今天就為大家介紹一個基于JavaScript實(shí)現(xiàn)的圣誕小游戲,文中的示例代碼簡單易懂,感興趣的可以學(xué)習(xí)一下2021-12-12
JavaScript中net::ERR_CONNECTION_REFUSED解決方法大全
在一次測試中遇到了報(bào)net::ERR_CONNECTION_REFUSED的錯誤,五哦一下面這篇文章主要給大家介紹了關(guān)于JavaScript中net::ERR_CONNECTION_REFUSED解決方法的相關(guān)資料,需要的朋友可以參考下2022-10-10

