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

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

包含功能:

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: ""
                        })
                    }
                }

            })
        }

    }

})

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

微信小程序二维码识别的更多相关文章

  1. 图片的URL上传至阿里云OSS操作(微信小程序二维码返回的二进制上传到OSS)

    当我们从网络中获取一个URL的图片我们要存储到本地或者是私有的云时,我们可以这样操作  把url中的图片文件下载到本地(或者上传到私有云中)  public String uploadUrlToOss ...

  2. Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)

    一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...

  3. 微信小程序-二维码汇总

    小程序二维码在生活中的应用场景很多,比如营销类一物一码,扫码开门,扫码付款等...小程序二维码分两种? 1.普通链接二维码 即跟普通的网站链接生成的二维码是一个意思,这种二维码的局限性如下: 对于普通 ...

  4. 微信小程序二维码推广统计

    微信小程序可以通过生成带参数的二维码,那么这个参数是可以通过APP的页面进行监控的 这样就可以统计每个二维码的推广效果. 今天由好推二维码推出的小程序统计工具HotApp小程序统计也推出了带参数二维码 ...

  5. php生成微信小程序二维码源码

    目前有3个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口.第一步:获取   access_token public function getWxAccessToken(){ $appid ...

  6. 微信小程序二维码是无法识别二维码跳转到小程序

    今天测试了一下,微信小程序圆形二维码是不能直接识别跳转到小程序: 但h5页面的那种微信公众号二维码是可以直接识别

  7. Java获取微信小程序二维码

    tip:通过该接口,仅能生成已发布的小程序的二维码. tip:可以在开发者工具预览时生成开发版的带参二维码. tip:接口A加上接口C,总共生成的码数量限制为100,000,请谨慎调用. tip: P ...

  8. 微信小程序参数二维码6问6答

    微信小程序参数二维码[基础知识篇],从6个常见问题了解小程序参数二维码的入门知识. 1.什么是小程序参数码? 微信小程序参数二维码:针对小程序特定页面,设定相应参数值,用户扫描后进入相应的页面. 2. ...

  9. node 无脑生成小程序二维码图

    RT 新建createwxaqrcode.js: const request = require('request') const fs = require('fs') // eg:生成购物车列表圆形 ...

随机推荐

  1. 关于JNDI技术链接操作数据库-2019.1.10

    Java 命名与目录接口(Java Naming and Directory Interface) ==需要使用的包为java.sql&javax.naming包==Mysql 步骤: 1.配 ...

  2. 洛谷P1393 动态逆序对(CDQ分治)

    传送门 题解 听别人说这是洛谷用户的双倍经验啊……然而根本没有感觉到……因为另外的那题我是用树状数组套主席树做的……而且莫名其妙感觉那种方法思路更清晰(虽然码量稍稍大了那么一点点)……感谢Candy大 ...

  3. django 视图 使用orm values_list()方法获取 指定的 多个字段的数据

    from .models import UserInfodata_set = UserInfo.objects.all().values_list("user_name", &qu ...

  4. 磁盘IO的概念

    转载自:http://blog.csdn.net/letterwuyu/article/details/53542291 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下 ...

  5. SaltStack 基础

    介 SaltStack是基于Python开发的一套C/S架构配置管理工具.它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理.号称世界上最快的消息队列Zero ...

  6. linux 命令 htop & 重定向 top, bashrc文件

    最近在用linux服务器跑程序,有几条linux命令还蛮重要的,总结一下: 1. 直接跑代码: python test.py 2. 若想程序在后台跑,即使本地和服务器断开也能运行: nohup pyt ...

  7. CentOS 7进入救援模式的方法

    CentOS 7版本进入救援模式并修改密码:方法1: runlevel 显示当前的运行级别(进入救援模式需要进入单用户模式) 方法2: ①.开机时随便按下键盘,进入系统选择菜单 ②.选择第一项,按e键 ...

  8. (转载)Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码

    1 import java.util.Collections; 2 import java.util.LinkedList; 3 import java.util.List; 4 5 public c ...

  9. tp5 数据库相关操作笔记

    这里如何连接多个数据库? 1,在conif.php文件中添加一个数据库配置(把database.php文件内容复制一份过来),这里取名为db2 2,在控制器的方法中使用 mysql中的参数绑定 mys ...

  10. 【Qt开发】常用控件--QSpinBox和QDoubleSpinBox

    QSpinBox和QDoubleSpinBox 是UI设计常用的控件. QSpinBox可用于显示和输入整数,并可以在显示框中添加前缀或后缀. QDoubleSpinBox可用于显示和输入小数,并可以 ...