js canvas压缩图片上传

$('input[type="file"]').on('change',function(){
	var files = !!this.files ? this.files : [];
		
	// Create a new instance of the FileReader
	var reader = new FileReader();

	// Read the local file as a DataURL
	reader.readAsDataURL(files[0]);
	
	var blob = window.URL.createObjectURL(files[0]);//转换为二进制blob文件
	var img=new Image();
	img.src=blob;
	img.onload = function(){
		var cvs = document.createElement('canvas');
		var ctx = cvs.getContext("2d");
		cvs.width=img.width*.2;
		cvs.height=img.height*.2;
		ctx.drawImage(this, 0, 0,img.width*.2,img.height*.2);
		var newImageData = cvs.toDataURL('image/jpg',1);
		
		//input file不能用于上传base64,所以要再加一个input,同时把当前file的input赋值空,防止原图片也上传
		this.value="";
		$(this).next('input[type="hidden"]').val(newImageData);
	}
	// When loaded, set image data as background of div
	reader.onloadend = function(){
		$('#img').attr('src',this.result);//缩略图
	}
})

  其中的newImageData即为新生成的压缩后的图片base64,上传保存即可。

转载于:https://www.cnblogs.com/w2xh/p/5056228.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值