1.先建立一个公共的js文件
function dataURLtoFile(dataurl) {
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], { type: mime })
}
export function compressImg(file) {
var src
var files
var fileSize = parseFloat(parseInt(file['size']) / 1024 / 1024).toFixed(2)
var read = new FileReader()
read.readAsDataURL(file)
return new Promise(function (resolve, reject) {
read.onload = function (e) {
var img = new Image()
img.src = e.target.result
img.onload = function () {
var w = this.width,
h = this.height
var canvas = document.createElement('canvas')
var ctx = canvas.getContext('2d')
var base64
canvas.setAttribute('width', w)
canvas.setAttribute('height', h)
ctx.drawImage(this, 0, 0, w, h)
if (fileSize < 1) {
base64 = canvas.toDataURL(file['type'], 1)
} else if (fileSize > 1 && fileSize < 2) {
base64 = canvas.toDataURL(file['type'], 0.5)
} else {
base64 = canvas.toDataURL(file['type'], 0.2)
}
files = dataURLtoFile(base64)
resolve(files)
}
}
})
}
2.在需要使用的页面
引入
import {compressImg} from '@/utils/file'
方法里使用
async onReadCardId(file) {
var files= await compressImg(file);
}