zoukankan      html  css  js  c++  java
  • js 压缩上传图片

    思路:

    1. 通过input标签获取本地图片
    2. 把获取到的图片转换成base64格式(canvas只能处理base64格式的图片)
    3. 通过canvas的API把图片压缩大小后再生成图片。
    4. 把压缩后的base64图片转成Blob的二进制流文件。
    5. 通过FormData 表单上传的形式提交至后端。
    <!DOCTYPE html>
    <html>
    <head> <meta charset="UTF-8" /> <title>压缩图片demo</title> </head> <body> <img id="img" src="" /> <input id="file" type="file" onchange="compress()" /> </body> <script> // 对图片进行压缩 function compress() { let fileObj = document.getElementById("file").files[0]; //上传文件的对象 let reader = new FileReader(); reader.readAsDataURL(fileObj); reader.onload = function (e) { let image = new Image(); image.src = e.target.result; image.onload = function () {
           let canvas = document.createElement("canvas"),
            context = canvas.getContext("2d");
           canvas.width = image.width;        
           canvas.height = image.height;
           context.drawImage(image, 0, 0, image.width / 2, image.height / 2);

           //预览图片
           let base64img = "";
           base64img = canvas.toDataURL("image/jpeg");
           document.getElementById("img").src = base64img;

           // 上传
           var fileData = new FormData();
           fileData.append("file", convertBase64UrlToBlob(base64img));
           axios.post(url,fileData).then(
              //上传成功!
           );     
                
    };
    };
    }
      /**
      * 将base64的图片转换为Blob
      */
      function convertBase64UrlToBlob(urlData) {
        var arr = urlData.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 });
      }
       
    </script>
    </html>

     附外链:https://blog.csdn.net/a8725585/article/details/84867040 canvas旋转图片

  • 相关阅读:
    WPF 策略模式
    老陈 WPF
    老陈 ASP.NET封装
    小石头 封装
    典型用户故事
    整数的四则运算
    对git的认识
    如何学习计算机
    团队编程二——web应用之人事管理系统
    团队编程——web应用之人事管理系统
  • 原文地址:https://www.cnblogs.com/kongwei/p/13118343.html
Copyright © 2011-2022 走看看