账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    web移动端对上传头像图片进行压缩,当图片过大的时候压缩不成功但是也没有报错
    57
    0

    这两天在做移动端上传头像功能,想对大于400kb的图片进行压缩再上传,压缩大于400kb的图片一直没成功,也没有报什么错误,后来我重新看了自己的代码,发现是因为当图片大小大于400kb的时候,压缩图片函数传入的base64Img参数我写错了,真的是太粗心,现在将正确的代码附上:

    uploadImg() {
          let vm = this;
          console.log(vm.temp);
          var img = document.getElementById("phoneImage"),
            maxSize = 400 * 1024; //400kb
          var imgFile = new FileReader();
          imgFile.readAsDataURL(img.files[0]);
          imgFile.onload = function() {
            vm.temp.base64Img = imgFile.result;
            if (vm.temp.base64Img.length < maxSize) {
              //图片直接上传
              alert("<=100kb;size=" + vm.temp.base64Img.length);
              uploadImage(vm.temp).then(response => {
                const data = response.data;
                vm.temp = data.data;
                setTimeout(() => {
                  vm.$router.push({
                    path: "/setting"
                  });
                  window.location.reload();
                }, 5);
              });
            } else {
              //  >400kb,压缩再上传
              
              vm.compress(vm.temp.base64Img, function(base64Img) {
                uploadImage({ base64Img }).then(response => {
                  const data = response.data;
                  setTimeout(() => {
                    vm.$router.push({
                      path: "/setting"
                    });
                    window.location.reload();
                  }, 5);
                });
              });
            }
          };
        },
        compress(base64Img, callback) {
          var img = new Image();
          img.src = base64Img;
          img.onload = function() {
            var width = img.width;
            var height = img.height;
            var canvas = document.createElement("canvas");
            canvas.width = width;
            canvas.height = height;
            canvas.getContext("2d").drawImage(img, 0, 0, width, height);
            callback(canvas.toDataURL("image/jpeg", 0.05));
          };
        }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 島嶼是海的傷疤 普通会员 1楼

      在Web移动端上传头像图片进行压缩时,如果压缩不成功,但也没有报错,可能是因为以下原因:

      1. 图片格式问题:如果你上传的是图片格式(如JPEG,PNG,BMP等)不被前端支持,可能会导致压缩不成功。你需要确保你的图片格式是前端支持的。

      2. 图片大小问题:如果你上传的图片大小过大,可能会导致压缩不成功。你可以尝试将图片的大小减小一些,或者使用一些图片压缩工具来压缩图片。

      3. 网络问题:如果你的网络连接不稳定或者速度过慢,可能会导致上传图片失败。你可以尝试切换到更稳定的网络环境,或者优化你的代码以提高上传速度。

      4. 后端问题:如果你的后端代码没有处理好图片上传,也可能会导致压缩不成功。你需要检查你的后端代码,确保它能正确地处理图片上传。

      5. 使用的压缩工具:如果你使用的是第三方的图片压缩工具,也可能会导致压缩不成功。你需要确保你使用的工具是可靠的,能正确地压缩图片。

      在处理这种情况时,你需要耐心排查,找出问题的原因,并采取相应的解决措施。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部