base64 转码 压缩 上传

let base64= "data:image/jpeg;base64," + rsp;

let blob = dataURLtoFile(base64,'uploadbackimg');

base64 格式 转化为 文件格式

//dataurl是base64格式的字符串,filename是你要命名的文件名
function dataURLtoFile(dataurl,filename) {
    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 Blob([u8arr], {type:mime});
};
// 图片上传

function handleInputChange(file) {
  //let file = document.getElementById('fileupload').files[0];    //读取文件
  let size = 1024 * 1024 * 20; // 5MB
  // 检查文件类型
  if (['jpg', 'jpeg', 'png', 'gif'].indexOf(file.type.split("/")[1]) < 0) {
    // 自定义报错方式
    mui.toast('请上传图片', {
      durtaion: 200
    });
    return;
  }
  // 文件大小限制
  if (file.size > size) {
    // 文件大小自定义限制
    mui.toast('图片过大上传失败!', {
      durtaion: 200
    });
    return;
  }

  var formData = new FormData();
  formData.append('fileType', "image");
  formData.append('name', "fileupload");
  formData.append('IsImageCut', true);
  formData.append('file', file);
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function () {

    if (xhr.readyState === 4) {
      // 字符串 转 json
      let data = JSON.parse(xhr.responseText);

      var img = data.pic; // 返回图片路径 url

      if (img == null || img == undefined || img == "undefined" || img == '') {
        mui.toast("图片上传失败!");
        return false;
      }   
      var _url = data.pic + "?imageView2/1/w/100/h/100"; // 七牛云图片质量 设置参数
      document.getElementById("backImg").src = _url;
      mui.toast("上传图片成功!");
    }

  };
  xhr.open('POST', '', true);
  xhr.send(formData);
}

图片压缩

function dataUrlResizetoFile(dataurl,quality,fn){
    dataURLtoImage(dataurl,function(image){
        canvasResizetoFile(imagetoCanvas(image),quality,fn);
    })
}


function dataURLtoImage(dataurl,fn){
    var img = new Image();
    img.onload = function() {
        fn(img);
    };
    img.src = dataurl;
};


function canvasResizetoFile(canvas,quality,fn){
    canvas.toBlob(function(blob) {
        fn(blob);
    },'image/jpeg',quality);
};

function imagetoCanvas(image){
    var cvs = document.createElement("canvas");
    var ctx = cvs.getContext('2d');
    cvs.width = image.width;
    cvs.height = image.height;
    ctx.drawImage(image, 0, 0, cvs.width, cvs.height);
    return cvs ;
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值