vue 图片转base64的两种方法(包括h5+plus调取手机图片)

vue 图片转base64的两种方法(包括h5+plus调取手机图片) 1.获取图片文件对象进行转换(主要是对PC端的) 在main.js文件下添加全局方法

Vue.prototype.$base64Img = (e)=>{ return new Promise(function(resolve, reject) {//使用Promise进行异步处理 let fileSize = 0; let fileMaxSize = 1024; //设置图片最大为 1M fileSize = e.target.files[0].size; //获取图片大小 let size = fileSize / 1024; let file = e.target.files[0]; //获取图片文件对象 let reader = new FileReader(); //实例化一个对象 if (size > fileMaxSize) { e.target.value=https://www.it610.com/article/''//内容清空 resolve({err:'图片大小必须小于1M!'}) }else if (size <= 0) { e.target.value=https://www.it610.com/article/''//内容清空 resolve({err:'图片大小大小不能为0M!'}) }else{ reader.readAsDataURL(file); //把图片文件对象转换base64 reader.onload = function(e) { resolve(e.target.result)//回到函数返回base64值 } } }) }

通过在组件中调用方法
methods:{ handleFile(e){//通过input标签选择文件传入e this.$base64Img(e).then((res)=>{//调用全局方法 console.log(res)//控制台打印出图片base64值 this.imgs.push(res)//添加到图片数组上进行渲染 }) } }

以下是全部代码
样式有点普通,请自行设计…
ul{ width: 100%; display: flex; flex-wrap: wrap; } li{ margin-left: 10px; }

2.获取图片路径进行转换base64(PC端与移动端都可以用) 获取图片路径我主要是在使用h5app时调取手机相册进行图片选择时返回的是图片路径,当然第一个方法也是可以在h5app上使用,但我感觉不太美观所有就没用。
以下是代码,同样配置全局方法
Vue.prototype.$base64Img = (path) => {//图片转换base64, 异步处理 function getBase64Image(img) {//转码格式方法 var canvas = document.createElement("canvas"); // 创建一个canvas canvas.width = img.width; // 设置对应的宽高 canvas.height = img.height; var ctx = canvas.getContext("2d"); // 二维绘图环境 ctx.drawImage(img, 0, 0, img.width, img.height); // 将图片画在画布上 var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase(); // 获取到图片的格式 var dataURL = canvas.toDataURL("image/" + ext); // 得到base64 编码的 dataURL return dataURL; } return new Promise(function(resolve, reject) {//使用Promise进行异步处理 let image = new Image(); //解决图片跨域问题 image.crossOrigin = ''; //获取传入的图片路径 image.src = https://www.it610.com/article/path; //图片加载完后的回调函数,调用转码函数 image.onload = function(){ resolve(getBase64Image(image))//回调函数返回base64值 } }) }

在PC端使用方法跟第一个方法一样,只是第二方法传入的路径与第一个传入的值不一样,所有不能直接使用input打开文件传入图片,怎么获取图片路径自行百度…
下面我将使用h5+plus方法进行使用,可以参考HTML5+规范
//绑定点击事件来触发此方法 filmImg(){ let that = this plus.gallery.pick( function(path){//调用h5+plus方法打开手机相册选择图片 console.log(path); //确认后返回图片路径 that.$base64Img(path).then((res)=>{//移动端图片base64封装方法 console.log(res)//控制台打印出图片base64值 //获取到base64所执行的方法...,自行设置 }) },function ( e ) { console.log( "取消选择图片" ); },{filter:"image",multiple:true,maximum:1,system:false} ); // 最多选择1张图片 }

h5+plus 方法只有利用 HbuildX 进行手机调试或者打包成app才可以使用,普通浏览器无法使用此方法
【vue 图片转base64的两种方法(包括h5+plus调取手机图片)】本人写的有问题的希望大家提出,我必定改善

    推荐阅读