vue圖片轉(zhuǎn)base64格式的方法示例
1.require的方式
用vue引入圖片的require方式獲取的值可以直接生成base64格式,但是該方法只適用于5kb大小以下的圖片
const path = require('@/assets/images/test.png')2.canvas.toDataURL()
該方法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等)圖片地址');
}
})
},3.FileReader.readAsDataURL()
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) {
// 得到一個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等)圖片地址')
}
})
},總結(jié)
到此這篇關(guān)于vue圖片轉(zhuǎn)base64格式的文章就介紹到這了,更多相關(guān)vue圖片轉(zhuǎn)base64格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
尤雨溪開發(fā)vue?dev?server理解vite原理
這篇文章主要為大家介紹了尤雨溪開發(fā)的玩具vite,vue-dev-server來理解vite原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題
今天小編就為大家分享一篇解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
使用vscode格式化文檔無效的解決辦法(vue代碼格式化文檔無效)
這篇文章主要給大家介紹了關(guān)于使用vscode格式化文檔無效的解決辦法,也就是vue代碼格式化文檔無效,這是最近突然遇到的一個問題,這里給大家介紹一下解決的辦法,需要的朋友可以參考下2023-08-08
Vue+Element UI實現(xiàn)概要小彈窗的全過程
彈窗效果是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個功能,下面這篇文章主要給大家介紹了關(guān)于Vue+Element UI實現(xiàn)概要小彈窗的相關(guān)資料,需要的朋友可以參考下2021-05-05

