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