zoukankan      html  css  js  c++  java
  • 制作海报

        import { qrcanvas } from 'qrcanvas';
        import html2canvas from 'html2canvas';
    
    • 生成二维码
            created() {
                this.getQrCodeHandler();
            },
    
            getQrCodeHandler() {
                let that = this;
                that.$nextTick(() => {
                    var imgCode = document.querySelectorAll('.img-box-code');
                    imgCode.forEach(item => {
                        var canvas1 = qrcanvas({
                            data: 生成二维码的地址,
                            size: 33
                        });
                        item.innerHTML = '';
                        item.appendChild(canvas1);
                    });
                    // this.mateImgHandler();
                });
            },
            // 手势开始
            touchstartHandler(e) {
                // console.log(e);
                e.preventDefault();
                this.startTime = e.touches[0].clientX;
                // let imgBoxName = e.target.parentElement.className;
                // let baseSrc = e.target.src;
                this.timer = setTimeout(() => {
                    if (!this.birdFlag) {
                        this.$webridge.showLoadingDialog('加载中...');
                        if (e.target.parentElement.className == 'img-box') {
                            this.mateImgHandler(e.target.parentElement, 'savePicture', 0);
                        } else if (e.target.parentElement.parentElement.className == 'img-box') {
                            this.mateImgHandler(e.target.parentElement.parentElement, 'savePicture', 0);
                        } else {
                            this.mateImgHandler(e.target.parentElement.parentElement.parentElement, 'savePicture', 0);
                        }
                    } else {
                        console.log('我正在移动');
                    }
                }, 700);
            },
            touchmoveHandler(e) {
                this.endTime = e.touches[0].clientX;
                if (Math.abs(this.startTime - this.endTime) >= 30) {
                    this.birdFlag = true;
                }
            },
            // 手势结束
            touchendHandler() {
                clearTimeout(this.timer);
                this.birdFlag = false;
                console.log('清除定时');
            },
            // 生成图片的连接
            mateImgHandler(ImageTarget, action, str) {
                // 所有要生成图片的元素
                // console.log(ImageTarget);
                let width = ImageTarget.offsetWidth;
                let height = ImageTarget.offsetHeight;
                var opts = {
                    useCORS: true, // 【重要】开启跨域配置
                     width,
                    height: height,
                    backgroundColor: '#FDF1E9'
                };
                html2canvas(ImageTarget, opts).then(canvas => {
                    var baseSrc = canvas.toDataURL();
                    this.getPutToken(baseSrc, action, str);
                });
            },
            // 获取token
            getPutToken(pic, action, str) {
                let that = this;
                // var pic = '填写你的base64后的字符串';
                var url = '地址';
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function() {
                    console.log(xhr.readyState)
                    if (xhr.readyState == 4) {
                        // console.log(xhr.responseText);
                        if(JSON.parse(xhr.responseText).statusCode == 200){
                            let putb64token = JSON.parse(xhr.responseText).data.uptoken;
                            that.putb64(pic, putb64token, action, str);
                        }else {
                            that.$webridge.hideLoadingDialog();
                            that.toast('图片上传失败,请重试')
                        }
                        
                    }
                };
                xhr.open('GET', url, true);
                xhr.setRequestHeader('Content-Type', '*');
                xhr.send();
            },
            putb64(pic, putb64token, action, str) {
                // console.log(putb64token);
                let that = this;
                var picUrl = pic.split(';base64,')[1];
                // console.log(picUrl);
                var url = '//upload.qiniup.com/putb64/-1';
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4) {
                        // console.log(xhr.responseText);
                        if(JSON.parse(xhr.responseText).key){
                            let src = '域名' + JSON.parse(xhr.responseText).key;
                            that.seedImgSrcHadnler(src, action, str);
                        }else {
                            that.toast('图片上传失败,请重试')
                        }
                    }
                };
                xhr.open('POST', url, true);
                xhr.setRequestHeader('Content-Type', 'application/octet-stream');
                xhr.setRequestHeader('Authorization', 'UpToken ' + putb64token);
                xhr.send(picUrl);
            }
    
    
    
  • 相关阅读:
    Mysql基本操作
    MySql架构
    并发中关键字的语义
    SpringMVC<一> 基本结构与配置
    Tomcat 顶层结构
    Linux 日常常用指令
    JSON 数据格式
    RMAN 增量备份级别说明
    Oracle常用数据库系统表单以及SQL的整理
    使用puTTY或Xshell连接阿里云TimeOut超时
  • 原文地址:https://www.cnblogs.com/douge/p/12493034.html
Copyright © 2011-2022 走看看