小程序实现扫码识别二维码内容

前言

在开发程序过程中经常和二维码打交道,经常要查看二维码的内容是什么,所以决定自己开发一个可以识别二维码,生成二维码的小工具。

一、项目展示

用户可以识别生活中常见的支持条码、二维码、DataMatrix和PDF417的内容。

可以输入要生成二维码的字符串,然后点击生成二维码图片。

 

二、扫码识别

页面比较简单,由二维码的回显框、复制内容按钮、重新扫码按钮组成

js中实现在进入首页时直接调用微信扫一扫功能,减少用户操作

识别获取到内容后回显之输入框内

设置打开可以分享好友和朋友圈
 

<view class="container">
    <view class="section">
        <textarea focus="{{focus}}" maxlength="2048" placeholder="扫描识别内容" value="{{show}}"></textarea>
    </view>
</view>
<view class="btn">
    <button bindtap="primary" disabled="{{disabled}}" loading="{{loading}}" plain="{{plain}}" size="{{primarySize}}" type="primary">              复制内容 
  </button>
    <button bindtap="defaultBtn" disabled="{{disabled}}" hoverClass="other-button-hover" loading="{{loading}}" plain="{{plain}}" size="{{defaultSize}}" type="default"> 重新扫描 </button>
</view>
Page({
    data: {
        defaultSize: "default",
        primarySize: "default",
        warnSize: "default",
        disabled: !1,
        plain: !1,
        loading: !1,
        show: ""
    },
    setLoading: function(a) {
        this.setData({
            loading: !this.data.loading
        });
    },
    onLoad: function() {
        var a = this;
        wx.scanCode({
            onlyFromCamera: !0,
            scanType: [ "barCode", "qrCode", "datamatrix", "pdf417" ],
            success: function(t) {
                console.log(t);
                var o = t.result;
                console.log(o), a.setData({
                    show: o
                });
            }
        });
    },
    primary: function(a) {
        wx.setClipboardData({
            data: this.data.show,
            success: function(a) {
                wx.getClipboardData({
                    success: function(a) {
                        console.log(a.data);
                    }
                });
            }
        });
    },
    defaultBtn: function(a) {
        this.onLoad();
    },
    //分享至朋友
    onShareAppMessage (){
        return{
            title:"扫码识别",
            path:"pages/index/index",
            imageUrl:""
        }
    },
    onShareTimeline(){
       return{
            title:"扫码识别",
            query:"pages/index/index",
            imageUrl:""
        }
    }
});

三、生成二维码

页面同样比较简单,由输入框和按钮组成

底部增加canvas用于回显生成二维码图片

给图片增加长按可以保存功能

<view class="container">
    <view class="section">
        <textarea bindconfirm="confirmHandler" bindinput="inputHandler" focus="{{focus}}" maxlength="2048" placeholder="输入需要转换为二维码的字符串" value="{{text}}"></textarea>
    </view>
</view>
<view class="btn">
    <button bindtap="tapHandler" disabled="{{disabled}}" loading="{{loading}}" plain="{{plain}}" size="{{primarySize}}" type="primary">              生成二维码
  </button>
</view>
<canvas bindlongtap="save" canvasId="canvas" class="canvas"></canvas>
var e, t = require("../../utils/weapp-qrcode.js");

Page({
    data: {
        text: "",
        image: ""
    },
    onLoad: function(a) {
        e = new t("canvas", {
            text: "",
            image: "",
            width: 150,
            height: 150,
            colorDark: "#1CA4FC",
            colorLight: "white",
            correctLevel: t.CorrectLevel.H
        });
    },
    confirmHandler: function(t) {
        var a = t.detail.value;
        e.makeCode(a);
    },
    inputHandler: function(e) {
        var t = e.detail.value;
        this.setData({
            text: t
        });
    },
    tapHandler: function() {
        e.makeCode(this.data.text);
    },
    save: function() {
        console.log("save"), wx.showActionSheet({
            itemList: [ "保存图片" ],
            success: function(t) {
                console.log(t.tapIndex), 0 == t.tapIndex && e.exportImage(function(e) {
                    wx.saveImageToPhotosAlbum({
                        filePath: e
                    });
                });
            }
        });
    },

    onShareAppMessage (){
        return{
            title:"扫码识别",
            path:"pages/index/index",
            imageUrl:""
        }
    },
    onShareTimeline(){
        return{
             title:"扫码识别",
             query:"pages/index/index",
             imageUrl:""
         }
     }
});

其中工具类utils/weapp-qrcode.js链接放在网盘请自行获取:https://pan.baidu.com/s/1jjspnfMW_mgFh6b10ToBGA  提取码:9joa

http://blog.csdn.net/xiaoxiao108/article/details/7226120 前些天,12306这个网站挺火的,看到网上出现了各种各样的登陆、订票插件跟程序。虽然没经历过春运,看到网上各种各样的插件跟工具挺有意思的,下载了几个看了看,都挺不错的。印象中有个java版本的订票程序里面有个验证识别功能,用tesseract-ocr来识别验证的,如果验证不是很复杂识别效果还可以。 开发环境 vs2008 开发语言C# 使用方法很简单 1.下载tesseract 的.net 类库tessnet2_32.dll ,添加引用。 http://www.pixel-technology.com/freeware/tessnet2/ 2.下载tesseract 相对应的语言包。 http://code.google.com/p/tesseract-ocr/downloads/list 3.调用tesseract 的方法进行识别。 具体代码 1.读取网上的验证到pictureBox中 //string url = "https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=lrand"; string url = "http://static.baixing.net/pages/mobile.php?c=bcqsFelX+vKQcrnIbhyDYQ==/2.jpg"; HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; HttpWebResponse response = request.GetResponse() as HttpWebResponse; System.IO.Stream responseStream = response.GetResponseStream(); this.pictureBox1.Image = Image.FromStream(responseStream); 2.OCR类 public class Ocr { public void DumpResult(List result) { foreach (tessnet2.Word word in result) //Console.WriteLine("{0} : {1}", word.Confidence, word.Text); MessageBox.Show(string.Format("{0} : {1}", word.Confidence, word.Text)); } public List DoOCRNormal(Bitmap image, string lang) { tessnet2.Tesseract ocr = new tessnet2.Tesseract(); ocr.Init(null, lang, false); List result = ocr.DoOCR(image, Rectangle.Empty); DumpResult(result); return result; } System.Threading.ManualResetEvent m_event; public void DoOCRMultiThred(Bitmap image, string lang) { tessnet2.Tesseract ocr = new tessnet2.Tesseract(); ocr.Init(null, lang, false); // If the Oc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下面我们举个栗子说明一下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值