vue 图片Base64压缩上传

1 篇文章 0 订阅
1 篇文章 0 订阅

最近做的一个vue项目,后台要求请求头是application/json格式的,所以我对axios 进行了全局设置了请求头;但是正常上传图片都是application/x-www-form-urlencoded;charset=UTF-8格式的,这样突然出现的from请求就很是尴尬;

对此和后台商量把图片转换成Base64在传过去

let _this = this;
// console.log(e)
var imgFile = e.target.files[0]; // 获取图片文件
var fr = new FileReader();       // 读取文件
fr.onload = function () {        // 图片读取完成后
    _this.imgBase64 = fr.result;			// 读取到的图片路径是Base64的
    var img = document.getElementById('imgDom');    // 获取图片DOM
    setTimeout(function(){                           // 因为获取数据会出现一点数据顺序问题  所以要做一下延迟
        var w = img.naturalWidth;    // 获取Base64图片的原始图片大小
        var h = img.naturalHeight;   
        //生成canvas
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');    // 创建属性节点
        var anw = document.createAttribute("width"); 
        anw.nodeValue = w;
        var anh = document.createAttribute("height");
        anh.nodeValue = h;
        canvas.setAttributeNode(anw);
        canvas.setAttributeNode(anh);
        ctx.drawImage(img, 0, 0, w, h);
        // .7值越小,所绘制出的图像越模糊
        _this.imgBase64 = canvas.toDataURL('image/jpeg',.7);
    },100);
};

_this.imgBase64 就是压缩后的路径  把这个传给后台就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值