JS?圖片base64與file_blob的相互轉(zhuǎn)換的方法實現(xiàn)
在開發(fā)中,經(jīng)常會遇到需要將base64編碼的圖片轉(zhuǎn)換為file文件格式用于上傳的情況;圖片base64編碼轉(zhuǎn)換為file格式過程中,思路:base64 --> Uint8Array --> new File()。
具體實現(xiàn)方法如下,封裝在文件xxx.js中,放置于項目文件夾utils下,開發(fā)中直接引入調(diào)用即可:
/**
* Base64 轉(zhuǎn) File
* @param base64 String base64格式字符串
* @param filename String 文件名稱或者文件路徑
* @param contentType String file對象的文件類型,如:"image/png"
*/
export function base64ToFile(base64, filename, contentType){
var arr = base64.split(',') //去掉base64格式圖片的頭部
var bstr = atob(arr[1]) //atob()方法將數(shù)據(jù)解碼
var leng = bstr.length
var u8arr = new Uint8Array(leng)
while(leng--){
u8arr[leng] = bstr.charCodeAt(leng) //返回指定位置的字符的 Unicode 編碼
}
return new File([u8arr], filename, {type:contentType})
}
/**
* Base64轉(zhuǎn)Blob
* @param base64 String base64格式字符串
* @param contentType String blob對象的文件類型,如:"image/png"
*/
function base64ToBlob(base64, contentType){
var arr = base64.split(',') //去掉base64格式圖片的頭部
var bstr = atob(arr[1]) //atob()方法將數(shù)據(jù)解碼
var leng = bstr.length
var u8arr = new Uint8Array(leng)
while(leng--){
u8arr[leng] = bstr.charCodeAt(leng) //返回指定位置的字符的 Unicode 編碼
}
var blob = new Blob([u8arr],{type:contentType})
var blobImg = {}
blobImg.url = URL.createObjectURL(blob ) //創(chuàng)建URL,
blobImg.name = new Date().getTime() + '.png'
return blobImg
}
/**
* File 轉(zhuǎn) Base64
* @param file Object 文件對象流
*/
export function fileToBase64(file){
return new Promise((resolve) => {
var reader = new FileReader()
reader.readAsDataURL(file)
//讀取后,result屬性中將包含一個data:URL格式的Base64字符串用來表示所讀取的文件
reader.onload = function(e){
resolve(e.target.result)
}
})
}
/**
* Blob 轉(zhuǎn) Base64
* @param blob Object blob對象
*/
export function blobToBase64(blob){
return new Promise((resolve) => {
var reader = new FileReader()
reader.readAsDataURL(blob)
//讀取后,result屬性中將包含一個data:URL格式的Base64字符串用來表示所讀取的文件
reader.onload = function(e){
resolve(e.target.result)
}
})
}
使用:引入xxx.js文件,調(diào)用方法
// 注意引入路徑不要出錯
import { base64ToFile, base64ToBlob, fileToBase64, blobToBase64 } from '@/utils/xxx.js'
const file = base64ToFile(base64, 'picture', 'image/png')
// 輸出File對象
console.log(file)
const blob = base64ToBlob(base64, 'image/png')
// 輸出blob對象
console.log(blob)
fileToBase64(file).then(res => {
// 輸出圖片base64
console.log(res)
}).catch(err => {
console.log(err)
})
blobToBase64(blob).then(res => {
// 輸出圖片base64
console.log(res)
}).catch(err => {
console.log(err)
})
到此這篇關(guān)于JS 圖片base64與file_blob的相互轉(zhuǎn)換的方法實現(xiàn)的文章就介紹到這了,更多相關(guān)JS 圖片base64與file_blob轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js+html5實現(xiàn)canvas繪制鏤空字體文本的方法
這篇文章主要介紹了js+html5實現(xiàn)canvas繪制鏤空字體文本的方法,涉及html5文字效果的相關(guān)技巧,需要的朋友可以參考下2015-06-06
javascript實現(xiàn)智能手環(huán)時間顯示
這篇文章主要為大家詳細(xì)介紹了javascript實現(xiàn)智能手環(huán)時間顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09
總結(jié)Javascript中數(shù)組各種去重的方法
相信大家都知道網(wǎng)上關(guān)于Javascript中數(shù)組去重的方法很多,這篇文章給大家總結(jié)Javascript中數(shù)組各種去重的方法,相信本文對大家學(xué)習(xí)和使用Javascript具有一定的參考借鑒價值,有需要的下面來一起看看。2016-10-10
JS中通過slice()&substring()截取字符串前幾位的方法
在Javascript使用字符串中,我們不一定需要全部的字符串,這時就需要截取字符串,本文主要介紹js中截取字符串前幾位的兩種方法:1、使用slice() 方法;2、使用substring() 方法,本文通過示例代碼介紹的非常詳細(xì),需要的朋友參考下吧2023-12-12
layui 富文本圖片上傳接口與普通按鈕 文件上傳接口的例子
今天小編就為大家分享一篇layui 富文本圖片上傳接口與普通按鈕 文件上傳接口的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法
今天小編就為大家分享一篇layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09

