• js图片压缩和上传并显示


    由于近期项目中需要做个图片压缩上传,所以就在网上找了些资料自己写了一个

    html部分

    <input id="file" type="file">
    <img id="imga" src="" alt="">

    js部分

    var eleFile = document.querySelector('#file');
    // 压缩图片需要的一些元素和对象
    var reader = new FileReader();
    var imga=document.getElementById('imga');
    var  img = new Image();
    // base64地址图片加载完毕后      
         img.onload = function() {
             var originWidth = this.width, //image resize   压缩后的宽
             originHeight=this.height,
             maxWidth = 400, maxHeight = 400,
             quality = 0.8, //image quality  压缩质量
             canvas = document.createElement('canvas'),
             drawer = canvas.getContext("2d");
             canvas.width = maxWidth;
            canvas.height = originHeight/originWidth*maxWidth;
              drawer.drawImage(img, 0, 0, canvas.width, canvas.height);
              //上传到七牛云base64
              var base64 = canvas.toDataURL("image/jpeg", quality); // 这里就拿到了压缩后的base64图片
              //console.log(base64);
              //blob对象
              canvas.toBlob(function(blob){
                  //console.log(blob)
              }, "image/jpeg", quality);
              var file = dataURLtoFile(base64, 'name');
              console.log(file);
              imga.src=base64;
    
          };
     //base64转file
    //filename图片的名字dataurl是base64地址
     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 File([u8arr], filename, {type:mime});
    }
    
    // 文件base64化,以便获知图片原始尺寸
    reader.onload = function() {
        //reader.result就是base64
        img.src = reader.result;
    };
    //addEventListener监听change事件
    eleFile.addEventListener('change', function () {
        file = this.files[0];
        // 选择的文件是图片
        if (file.type.indexOf("image") == 0) {
            //console.log(file);
            reader.readAsDataURL(file); //以数据url的方式读取文件内容
             
        }
    });

    效果图

  • 相关阅读:
    Python爬虫实验报告之Big_Homework2_Douyu
    Python_dict
    Common sequence manipulation functions
    python基于opencv库的人脸识别总结
    使用cwrsync同步windows文件到linux
    搭建mosquitto
    docker搭建mqtt
    docker部署gofastdfs
    ap配置
    冒泡排序
  • 原文地址:https://www.cnblogs.com/aSnow/p/9067789.html
Copyright © 2020-2023  润新知