用vue引入圖片的require方式獲取的值可以直接生成base64格式,但是該方法只適用于5kb大小以下的圖片
10年積累的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有安福免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。const path = require('@/assets/images/test.png')
該方法canvas.toDataURL(`image/${ext}`)傳入的圖片類型是什么生成后的base64數(shù)據(jù)前綴就是什么類型,如果傳入的類型和生成的類型不同,則表示該方法不支持該類型的圖片,例如gif圖片轉(zhuǎn)換后是png
imgUrlToBase64(url) {
return new Promise((resolve, reject) =>{
if (!url) {
reject('請傳入url內(nèi)容')
}
if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(url)) {
// 圖片地址
const image = new Image()
// 設(shè)置跨域問題
image.setAttribute('crossOrigin', 'anonymous')
// 圖片地址
image.src = url
image.onload = () =>{
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = image.width
canvas.height = image.height
ctx.drawImage(image, 0, 0, image.width, image.height)
// 獲取圖片后綴
const ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase()
// 轉(zhuǎn)base64
const dataUrl = canvas.toDataURL(`image/${ext}`)
resolve(dataUrl || '')
}
} else {
// 非圖片地址
reject('非(png/jpe?g/gif/svg等)圖片地址');
}
})
},
getBase64(imgUrl) {
return new Promise((resolve, reject) =>{
if (!imgUrl) {
reject('請傳入imgUrl內(nèi)容')
}
if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(imgUrl)) {
window.URL = window.URL || window.webkitURL
var xhr = new XMLHttpRequest()
xhr.open('get', imgUrl, true)
xhr.responseType = 'blob'
xhr.onload = function() {
if (this.status == 200) {
// 得到一個(gè)blob對象
var blob = this.response
const oFileReader = new FileReader()
oFileReader.onloadend = function(e) {
const base64 = e.target.result
resolve(base64 || '')
}
oFileReader.readAsDataURL(blob)
}
}
xhr.send()
} else {
// 非圖片地址
reject('非(png/jpe?g/gif/svg等)圖片地址')
}
})
},
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧