js图片压缩并上传?

Posted 向往回得来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js图片压缩并上传?相关的知识,希望对你有一定的参考价值。

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的方式读取文件内容
         
    }
});
html
<input id="file" type="file">
<img id="imga" src="" >

以上是关于js图片压缩并上传?的主要内容,如果未能解决你的问题,请参考以下文章

js上传图片并压缩

前端js实现canvas压缩图片并上传

前端js实现canvas压缩图片并上传

HTML5 file API加canvas实现图片前端JS压缩并上传

HTML5 file API加canvas实现图片前端JS压缩并上传 (转载)

移动端压缩并ajax上传图片解决方案