微信小程序二维码识别

news/2025/2/26 6:13:58

 

目前市场上二维码识别的软件或者网站越来越多,可是真正方便,无广告的却少之很少。

于是,自己突发奇想做了一个微信二维码识别的小程序。

包含功能:

    1、识别二维码

        ①普通二维码

        ②条形码

        ③只是复制解析出来的数据

    2、生成二维码

        ①只是从粘贴板生成二维码

软件截图:

体验二维码:



以下为主要代码

index.js

// pages/main/index.js
var QR = require("../../utils/qrcode.js");
Page({
    data: {
        canvasHidden: false,
        maskHidden: true,
        imagePath: '',
      placeholder: 'https://www.mojxtang.club/',//默认二维码生成文本
        placeholder_data:"点击自动获取剪切板的内容!",
        QRcode:"",
        bindfocus_value:"",
        input_state:0
    },
    onLoad: function (options) {
        // 页面初始化 options为页面跳转所带来的参数
        var size = this.setCanvasSize();//动态设置画布大小
        var initUrl = this.data.placeholder;
        this.createQrCode(initUrl, "mycanvas", size.w, size.h);
    },
    onReady: function () {

    },
    onShow: function () {
        var that = this;
            that.setData({
                input_state:0
            })
        // 页面显示
    },
    onHide: function () {
        // 页面隐藏
    },

    onUnload: function () {
        // 页面关闭

    },
    //适配不同屏幕大小的canvas
    setCanvasSize: function () {
        var size = {};
        try {
            var res = wx.getSystemInfoSync();
            var scale = 750 / 686;//不同屏幕下canvas的适配比例;设计稿是750宽
            var width = res.windowWidth / scale;
            var height = width;//canvas画布为正方形
            size.w = width;
            size.h = height;
        } catch (e) {
            // Do something when catch error
            console.log("获取设备信息失败" + e);
        }
        return size;
    },
    createQrCode: function (url, canvasId, cavW, cavH) {
        //调用插件中的draw方法,绘制二维码图片
        QR.api.draw(url, canvasId, cavW, cavH);
        setTimeout(() => { this.canvasToTempImage(); }, 1000);

    },
    //获取临时缓存照片路径,存入data中
    canvasToTempImage: function () {
        var that = this;
        wx.canvasToTempFilePath({
            canvasId: 'mycanvas',
            success: function (res) {
                var tempFilePath = res.tempFilePath;
                console.log(tempFilePath);
                that.setData({
                    imagePath: tempFilePath,
                    // canvasHidden:true
                });
            },
            fail: function (res) {
                console.log(res);
            }
        });
    },
    //点击图片进行预览,长按保存分享图片
    previewImg: function (e) {
        var img = this.data.imagePath;
        console.log(img);
        wx.previewImage({
            current: img, // 当前显示图片的http链接
            urls: [img] // 需要预览的图片http链接列表
        })
    },
    formSubmit: function (e) {
        var that = this;
        var url = e.detail.value.url;
        that.setData({
            maskHidden: false,
            QRcode:""
        });
        wx.showToast({
            title: '生成中...',
            icon: 'loading',
            duration: 2000
        });
        var st = setTimeout(function () {
            wx.hideToast()
            var size = that.setCanvasSize();
            //绘制二维码
            that.createQrCode(url, "mycanvas", size.w, size.h);
            that.setData({
                maskHidden: true
            });
            clearTimeout(st);
        }, 2000)

    },
    rq_jiema:function(evt){
        var that = this;
        console.log(evt);
        wx.scanCode({
            success: function (res) {
                console.log(res);
                that.setData({
                    QRcode: res.result
                })
                
            }
        })
    },
    Copy_to_clipboard:function(evt){
        var that = this;
        wx.setClipboardData({
            data: evt.currentTarget.dataset.text,
            success(res) {
               
            }
        })
    },
    bindfocus_value:function(){
        var that = this;
        if (that.data.input_state == 0){
            wx.showModal({
                title: '提示',
                content: '是否将剪切板的内容,制作成二维码?',
                success: function (res) {
                    if (res.confirm) {
                        wx.getClipboardData({
                            success(res) {
                                that.setData({
                                    input_state:0,
                                    bindfocus_value: res.data
                                })
                            }
                        })
                    } else {
                        that.setData({
                            input_state: 1,
                            bindfocus_value: ""
                        })
                    }
                }

            })
        }
       
        
    }

})
View Code

 

博客地址:http://blog.mojxtang.com

 

转载于:https://www.cnblogs.com/mojxtang/p/10007530.html


http://www.niftyadmin.cn/n/4556743.html

相关文章

【论文阅读】Dynamic Graph CNN for Learning on Point Clouds

论文题目: Dynamic Graph CNN for Learning on Point Clouds (用于点云学习的动态图卷积神经网络) 论文作者: YUE WANG, 麻省理工学院; YONGBIN SUN, 麻省理工学院; ZIWEI LIU, 加州大学伯克利分校/ICSI; SANJAY E. SARMA, 麻省理工学院; MICHAEL M. BRONSTEIN, 伦敦帝国理工…

Sonarqube安装及基本使用

1 需要环境 2 解压包 #解压 unzip sonarqube-6.7.4.zip3 创建数据库 4 修改配置文件 cd /usr/local/sonarqube-6.7.4/conf vim sonar.propertiessonar.jdbc.usernameroot sonar.jdbc.password123456 sonar.jdbc.urljdbc:mysql://192.168.38.45:3306/sonar?useUnicodetrue&am…

Redis + keepalived 高可用行配置检测脚本

Redis 在生产配置中;除redis集群、哨兵模式之外;主从模式还是比较普遍的。 配置 redis 多主从;由 keepalived 做 VIP 地址漂移。可以实现redis的高可用性。 keepalived 配置示例;(master 主节点配置,backup…

.net里的timer

}} ElapsedEventArgs e) { Console.WriteLine("The Elapsed event was raised at {0}" using System;using System.Timers;//在这个空间下面public class Timer1{ private static System.Timers.Timer aTimer; public static void Main() { aTimer new System.Timer…

jenkins环境搭建(一)

1 安装 rpm -ivh jenkins-2.190.3-1.1.noarch.rpm2 修改配置 vim /etc/sysconfig/jenkins#用户 JENKINS_USER"root" #端口 JENKINS_PORT"8000"3 启动jenkins systemctl start jenkins #启动失败,查看日志 journalctl -xe #建立软连接 ln -s …

Maven 梳理 - maven新建web项目提示javax.servlet.http.HttpServlet was not found on the Java Build Path...

方法一&#xff1a; <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> 方法二&#xff1a; Java Bui…

C语言好学么。

好不好学 我想没有问题 ||| 还是很好学的 看你怎么学 你一定会学好的了 ||| 不好学 ||| 只要你是学理科的 所以你进大学了如果想学好C语言的话 c语言和高等数学有联系的 认真的学就很简单 说难也难 我也是当时是从零开始学习的 ||| 我觉得不难学 就必须得去吧高等数学搞好 怎么…

Jenkins集成Gitlab、Jdk、Maven(二)

1 集成Gitlab 1.1 安装插件 Credentials Binding1.2 git安装 #Jenkins 服务器上要有git环境 yum install git -y #查看版本 git --version1.3 生成公钥/私钥 #生成命令 ssh-keygen -t rsa cd /root/.ssh/ #查看公钥 cat id_rsa.pub #查看私钥 cat id_rsa1.4 gitlab设置公…