zoukankan      html  css  js  c++  java
  • C#生成和识别二维码

    用到外部一个DLL文件(ThoughtWorks.QRCode.dll),看效果

    C#生成和识别二维码

    生成截图

    C#生成和识别二维码

    识别截图

    生成二维码后右键菜单可以保存二维码图片,然后可以到识别模式下进行识别,当然生成后可以用手机扫描识别出来,或者用手机直接扫描以上两张图也能看到识别后的结果。

    使用方法,在解决方案中引用上面那个dll文件,引入命名空间

    using ThoughtWorks.QRCode.Codec;
    using ThoughtWorks.QRCode.Codec.Data;
    看完整的生成二维码代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Text;
    using System.Windows.Forms;
    using ThoughtWorks.QRCode.Codec;
    using ThoughtWorks.QRCode.Codec.Data;
    namespace 二维码
    {
        public partial class UC_To : UserControl
        {
            public UC_To()
            {
                InitializeComponent();
            }
                
            private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text.Trim() != "")
                {
                    string enCodeString = textBox1.Text;
                    QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                    pictureBox1.Image = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
                }
                //else
                    //MessageBox.Show("请输入内容");
            }
                
            private void 保存图片ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (pictureBox1.Image != null)
                {
                    SaveFileDialog s = new SaveFileDialog();
                    s.Title = "保存二维码图片";
                    s.Filter = "图片文件(*.jpg)|*.jpg";
                    if(s.ShowDialog()==DialogResult.OK)
                    try
                    {
                        pictureBox1.Image.Save(s.FileName,System.Drawing.Imaging.ImageFormat.Jpeg);
                        MessageBox.Show("保存成功");
                    }
                    catch { MessageBox.Show("保存失败"); }
                }
            }
        }
    }

    看完整的识别二维码的代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Text;
    using System.Windows.Forms;
    using ThoughtWorks.QRCode.Codec;
    using ThoughtWorks.QRCode.Codec.Data;
    namespace 二维码
    {
        public partial class UC_From : UserControl
        {
            public UC_From()
            {
                InitializeComponent();
            }
            string filepath = "";
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog p = new OpenFileDialog();
                p.Title = "请选择二维码文件";
                p.Filter = "图片文件(*.jpg)|*.jpg";
                p.Multiselect = false;
                if (p.ShowDialog() == DialogResult.OK)
                {
                    filepath = p.FileName;
                    System.Threading.Thread t = new System.Threading.Thread(ss);
                    t.IsBackground = true;
                    t.Start();
                }
            }
            private void ss()
            {
                if (filepath != "")
                {
                    string tt = "";
                    try
                    {
                        Invoke((EventHandler)delegate
                        {
                            button1.Enabled = false;
                            button1.Text = "Waiting!";
                            pictureBox1.Image = new Bitmap(filepath);
                        });
                        //pictureBox1.Size = new Size(new Bitmap(filepath).Size.Width, new Bitmap(filepath).Size.Height);
                        QRCodeDecoder qrDecoder = new QRCodeDecoder();
                        string txtMsg = qrDecoder.decode(new QRCodeBitmapImage(new Bitmap(pictureBox1.Image)), Encoding.UTF8);
                        tt = txtMsg;
                    }
                    catch { tt = "识别失败"; }
                    Invoke((EventHandler)delegate
                    {
                        textBox1.Text = tt;
                        button1.Enabled = true;
                        button1.Text = "识别";
                    });
                }
                System.Threading.Thread.CurrentThread.Abort();
            }
            private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                e.Handled = true;
            }
        }
    }



  • 相关阅读:
    oracel 备份导出报错 EXP-00091: Exporting questionable statistics
    将多张图片快速制作成一个PDF文件
    自连接表:M可能无下级,可能有下级
    STL迭代器失效总结
    DNS劫持和DNS污染的区别
    snprintf函数用法(转)
    sql查询面试题
    linux获取主机信息
    linux网络通信中的地址形式转换
    printf函数编程小技巧
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594738.html
Copyright © 2011-2022 走看看