js上传图片压缩

 private afterFront(file){
            console.log(2, file)
            let file_mb = file.content.length / (1024.0 * 1024);
            console.log(2, file_mb);

            let img = new Image();
            img.src = file.content;

            this.compress(file_mb, img, (d) => {
                let scanImg = d;
                // if (d) {
                //     scanImg = d;
                // } else {
                //     scanImg = file.content;
                // }
                console.log(2, scanImg.length / (1024.0 * 1024))
                this.uploadBase(scanImg,1);
            })
        }

compress(file_mb, img, callBack) {
            if (file_mb <= 0.5) {
                callBack(img.src);
                return;
            }
            img.onload = () => {
                const canvas = document.createElement('canvas');
                if (!canvas) {
                    callBack(null);
                    return;
                }
                const ctx = canvas.getContext('2d');
                if (!ctx) {
                    callBack(null);
                    return;
                }
                const width = img.width;
                const height = img.height;
                canvas.width = width;
                canvas.height = height;
                ctx.fillStyle = '#fff';
                ctx.fillRect(0, 0, width, height);
                ctx.drawImage(img, 0, 0, width, height);
                setTimeout(()=>{
                    callBack(canvas.toDataURL('image/jpeg', 0.5 / file_mb));
                },0);
            }
        }

  private uploadBase(base,face){
            // loading.openLoading();
            api.postJson('/oss/aaa',{content:base}).then((res:any)=>{
                loading.clearLoading();
                this.canSelect = false;
                if (res.errno=='0') {
                    if (face == 1) {
                        this.data2.img = this.imgTransfer(res.data.url);
                    }
                } else {
                    this.$toast(res.error);
                }
            }).catch((error)=>{
                loading.clearLoading();
                this.$toast('网络波动,请稍后再试');
            })
        }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值