input 上传多张图片

input上传视频(一)上传视频、并判断大小
canvas压缩图片(二)canvas压缩图片(二)

pc端上传图片,一张张的选太过麻烦,这里我们通过multiple属性便可以轻松搞定

<input 
	type="file" 
	accept="image/*" 
	@change="onFileChange('photoId')" 
	ref="photoId" 
	name="file1"
	class="btn"
	multiple="multiple"
/>

获取多张图片,进行处理

//获取图片
    async onFileChange(name) {
      let inputDOM = this.$refs[name];
      let files    = inputDOM.files;
			for(let i=0;i<files.length;i++){
				let  imageUrl = this.getObjectURL(files[i]);
				let src = await convertImgToBase64({url:imageUrl});
				this.arr.push({
					primary :{
						base64:src
					}
				});

				this.imgArr.push(src);
			}
      //重置value
      inputDOM.value = '';
		},

对图片进行压缩

convertImgToBase64 =(obj,Num) =>{ 
  Num = Num || 40;
  if(obj.type){
    let type = obj.url.split(';base64,')[0].split('data:image/')[1];
    if(type =='webp'){
      type = 'jpeg'
    }
    obj.type = type || 'jpeg';
  }
  
  obj.num  = obj.num  || 0.9;
  
  return new Promise(async (resolve)=>{
    var canvas = document.createElement('CANVAS'); 
    var ctx = canvas.getContext('2d'); 
    var img = new Image; 
    img.crossOrigin = 'Anonymous'; 
    img.src = obj.url; 
    img.onload = async()=>{
      var width  = img.width;
      var height = img.height;
      // 按比例压缩4倍
      canvas.width = width  * obj.num; 
      canvas.height = height*obj.num; 
      // ctx.fillStyle = "#fff";
      // ctx.fillRect(0, 0, canvas.width, canvas.height)
      ctx.drawImage(img,0,0,width,height,0,0,width*obj.num,height*obj.num); 
      var dataURL = canvas.toDataURL('image/'+obj.type,obj.num);
      // let num = parseFloat(obj.num-0.1);
      let num = obj.num;
      if(getImgSize(dataURL) >=Num && num>0){
        canvas = null;
        await  convertImgToBase64({url:dataURL,num ,type:obj.type},Num).then((res)=>{
          resolve(res)
        })
      } else{
        resolve(dataURL)
        canvas = null;
      }
    };
  })
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值