js 压缩上传的图片方法(默认上传的是file文件)

//压缩图片方法
function compressImg(file,callback){
	var src;
	var fileSize = parseFloat(parseInt(file['size'])/1024/1024).toFixed(2);
	var read = new FileReader();
	read.readAsDataURL(file);
	read.onload = function (e) {
		var img = new Image();    
	    img.src = e.target.result;    
	    img.onload = function(){    
	        //默认按比例压缩    
	        var w = this.width,    
	            h = this.height;   
	        //生成canvas    
	        var canvas = document.createElement('canvas');    
	        var ctx = canvas.getContext('2d');   
	        var base64;
	        // 创建属性节点    
	        canvas.setAttribute("width", w);    
	        canvas.setAttribute("height", h);  
	        ctx.drawImage(this, 0, 0, w, h);    
	        if(fileSize<1){
	        	//如果图片小于一兆 那么不执行压缩操作
	        	base64 = canvas.toDataURL(file['type'], 1);  
	        }else if(fileSize>1&&fileSize<2){
	        	//如果图片大于1M并且小于2M 那么压缩0.5
	        	base64 = canvas.toDataURL(file['type'], 0.5);  
	        }else{
	        	//如果图片超过2m 那么压缩0.2
	        	base64 = canvas.toDataURL(file['type'], 0.2);  
	        }
	        // 回调函数返回file的值    
	        callback(base64);
	    };  
	};
};  

  图片压缩完成以后会转换成base64返回

posted @ 2018-07-24 13:10  飞尽堂前燕  阅读(1237)  评论(0编辑  收藏  举报