vue項(xiàng)目base64轉(zhuǎn)img方式
base64轉(zhuǎn)img方式
輸入框:
? ? ? <el-input ? ? ? ? class="input-box" ? ? ? ? ref="elInputText" ? ? ? ? type="textarea" ? ? ? ? v-model="content" ? ? ? ? @paste.native="onPasteEvent" ? ? ? ? @keydown.native.enter.prevent="handlerKeyupEnter" ? ? ? ></el-input>
設(shè)定一個(gè) dialog 彈框。
? ? <!-- 圖片預(yù)覽dialog --> ? ? <el-dialog ? ? ? title="圖片預(yù)覽" ? ? ? :visible.sync="previewImgObj.show" ? ? ? v-if="previewImgObj.show" ? ? ? append-to-body ? ? > ? ? ? <img ? ? ? ? width="100%" ? ? ? ? v-if="previewImgObj.imgUrl" ? ? ? ? class="ly-margin-center" ? ? ? ? :src="previewImgObj.imgUrl" ? ? ? ? v-image-view ? ? ? /> ? ? ? <span slot="footer" class="dialog-footer"> ? ? ? ? <el-button @click="previewImgObj.show = false">取 消</el- button> ? ? ? ? <el-button type="primary" @click="sendBase64ImgMessge">確 定</el-button> ? ? ? </span> ? ? </el-dialog> ? ? // 監(jiān)聽粘貼事件 ? ? async onPasteEvent(e) { ? ? ? e.preventDefault(); ? ? ? let data = await addEventPasteListener(e); ? ? ? ?if (data.type === "string") { ? ? ? ? // 復(fù)制某條消息 ? ? ? ? if (!data.string) return; ? ? ? ? // console.log(data.string) ? ? ? ? // 正則表達(dá)式判斷data是否是base64 ? ? ? ? function validDataUrl(s) { ? ? ? ? ? return validDataUrl.regex.test(s); ? ? ? ? } ? ? ? ? validDataUrl.regex = /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i; ? ? ? ? // 如果是base64轉(zhuǎn)換成圖片預(yù)覽 ? ? ? ? if (validDataUrl(data.string)) { ? ? ? ? ? let that = this; ? ? ? ? ? function previwImg(item) { ? ? ? ? ? ? that.previewImgObj = { ? ? ? ? ? ? ? show: true, ? ? ? ? ? ? ? imgUrl: item ? ? ? ? ? ? }; ? ? ? ? ? } ? ? ? ? ? previwImg(data.string); ? ? ? ? } ? ? ?}
效果展示
base64和jpg/png互轉(zhuǎn)
base64的轉(zhuǎn)換
在中調(diào)用base64格式的照片
方式一
<image :src="getBase64(base64)"/>
getBase64(base64){ ? ? var changebase64='data:image/jpg;base64,'+base64.replace(/[\r\n]/g,'') ? ? console.log(changebase64) ? ? return changebase64 ? ?},
方式二:vue -element 在image組件中直接調(diào)用base64
? ? <el-table :data="devicePersonData" > ? ? ? <el-table-column label="照片"> ? ? ? ? <template ?#default="scope"> ? ? ? ? <el-image style="width: 60px;border-radius: 6px" ? ? ? ? ? ? ? ? ? :src="getBase64(scope.row.base64)"></el-image> ? ? ? ? </template> ? ? ? </el-table-column> ? ? ? <el-table-column ? ? ? ? label="姓名" ? ? ? ? prop="name"> ? ? ? </el-table-column> ? ? ? </el-table-column> ? ? </el-table>
?// 轉(zhuǎn)換base64 getBase64 (base64) { ? return 'data:image/png;base64,' + base64 }
方式三:Element UI 中將上傳的圖片轉(zhuǎn)換成base64
<el-upload ? class="avatar-uploader" ? action="company/update" ? :headers="headers" ? :auto-upload="false" ? :data="logoData" ? :show-file-list="false" ? :on-change="getFile"> </el-upload>
// <el-upload>組件中的on-change事件(將獲取到的照片文件去轉(zhuǎn)換為base64) getFile (file, fileList) { ? ? //這里使用'.then()'去獲取Promise的返回結(jié)果 ? this.changeBase64(file.raw).then(res => { ? ? this.imageUrl = res ? }) }, ?//將獲取到的照片文件去轉(zhuǎn)換為base64 changeBase64 (file) { ? return new Promise(function (resolve, reject) { ? ? const reader = new FileReader() ? ? let imgResult = '' ? ? reader.readAsDataURL(file) ? ? reader.onload = function () { ? ? ? imgResult = reader.result ? ? } ? ? reader.onerror = function (error) { ? ? ? reject(error) ? ? } ? ? reader.onloadend = function () { ? ? ? resolve(imgResult) ? ? } ? }) }, ? ? // 因?yàn)檗D(zhuǎn)換后的base64是帶頭部的,如果需要去掉則可以使用replace()去替換 ? ? const Base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA......" ? ??? ?// place(serchValue:/搜索字符串/,replaceValue:'替換字符串') ? ? Base64.replace(/^data:image\/\w+;base64,/, '')
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vite多環(huán)境配置及變量識(shí)別規(guī)則
這篇文章主要為大家介紹了Vite多環(huán)境配置時(shí)間及vite識(shí)別環(huán)境變量的規(guī)則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09從零擼一個(gè)pc端vue的ui組件庫(kù)( 計(jì)數(shù)器組件 )
這篇文章主要介紹了pc端vue的ui組件庫(kù)的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Vue使用json-server進(jìn)行后端數(shù)據(jù)模擬功能
這篇文章主要介紹了Vue使用json-server進(jìn)行后端數(shù)據(jù)模擬功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04vue中el-autocomplete與el-select的異同
本文主要介紹了vue中el-autocomplete與el-select的異同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Vue如何解決子組件data從props中無(wú)法動(dòng)態(tài)更新數(shù)據(jù)問題
這篇文章主要介紹了Vue如何解決子組件data從props中無(wú)法動(dòng)態(tài)更新數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue?elementUI表單嵌套表格并對(duì)每行進(jìn)行校驗(yàn)詳解
element-ui中有詳細(xì)的各種表格及表格方法,下面這篇文章主要給大家介紹了關(guān)于Vue?elementUI表單嵌套表格并對(duì)每行進(jìn)行校驗(yàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01