美文网首页
C# 二维码

C# 二维码

作者: 一个三要不起 | 来源:发表于2019-09-27 17:02 被阅读0次

1.添加包

先使用NuGet包管理器添加ThoughtWorks.QRCoder

2.写代码

引入包

using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;

二维码工具类

static class QRCoderTools
    {
        static Bitmap AddWhiteBorder(Bitmap bitmap, int borderSize)
        {
            Bitmap bmp = new Bitmap(bitmap.Width + borderSize * 2, bitmap.Height + borderSize * 2, bitmap.PixelFormat);
            Graphics bg = Graphics.FromImage(bmp);
            bg.Clear(Color.White);
            bg.DrawImage(bitmap, borderSize, borderSize);

            return bmp;
        }

        /// <summary>
        /// 生成二维码
        /// </summary>
        /// <param name="msg">信息</param>
        /// <param name="version">版本 1 ~ 40</param>
        /// <param name="pixel">像素点大小</param>
        /// <param name="borderSize">白边大小</param>
        /// <returns>位图</returns>
        public static Bitmap Encode(string msg, int version, int pixel, int borderSize)
        {
            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            qrCodeEncoder.QRCodeVersion = version;
            qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
            qrCodeEncoder.QRCodeScale = pixel;

            Bitmap bmp = null;
            try
            {
                bmp = qrCodeEncoder.Encode(msg, Encoding.UTF8);
            }
            catch (System.IndexOutOfRangeException)
            {
                MessageBox.Show("数据量过大,请调大Version值");
                return null;
            }
            
            Bitmap qr_code_image = AddWhiteBorder(bmp, borderSize);
            bmp.Dispose();
            return qr_code_image;
        }

        /// <summary>
        /// 识别二维码
        /// </summary>
        /// <param name="bmp">包含二维码的图片</param>
        /// <returns>二维码内容</returns>
        public static string Decode(Bitmap bmp)
        {
            QRCodeDecoder qrCodeDecoder = new QRCodeDecoder();
            QRCodeBitmapImage qrCodeBitmapImage = new QRCodeBitmapImage(bmp);
            string ret = string.Empty;
            try
            {
                ret = qrCodeDecoder.decode(qrCodeBitmapImage, Encoding.UTF8);
            }
            catch (Exception)
            {
                MessageBox.Show("识别失败");
            }
            return ret;
        }
    }

最后

该工具包不能添加图标,若想添加图标可以自行渲染,或者用NuGet添加QRCoder工具,它有添加图标的接口

相关文章

  • 简单判断图像的真正格式

      今天遇到⼀个问题:  使用delphi打开C#存储生成的Jpeg格式的二维码图形文件居然⽆法正确读取。但是双击...

  • C# 二维码

    1.添加包 先使用NuGet包管理器添加ThoughtWorks.QRCoder 2.写代码 引入包 二维码工具类...

  • 微信公众号开发C#系列-11、生成带参数二维码应用场景

    1、概述 我们在微信公众号开发C#系列-7、消息管理-接收事件推送章节有对扫描带参数二维码事件的处理做了讲解。本篇...

  • C# 6/7 新功能

    C#新功能 一、C#历史演变 C# 1,Visual Studio .NET 2002: C# 初版。 C# 1....

  • Unity中的C#编程-零基础(Unity2017)

    01 什么是C#编程语言 人与机器之间的语言,C#脚本,C#源代码,C#源文件 Unity支持的俩种语言:C# S...

  • 目录 - C#

    总目录 C# 第01局:泛型 C# 第02局:反射 C# 第03局:特性 C# 第04局:委托 C# 第05局:事...

  • 使用GRPC

    C# .NET Framework 对于C# .NET Framework平台,使用GRPC for C#,GRP...

  • C#-分享几种常用的编码转换,base64、MD5、string

    C# Base64编码 C# 文件与二进制流 C# MD5加密 C# string和byte[]

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • C# QR二维码DEMO

    QR二维码 相关类库 DEMO功能 Encode 生成二维码图片Encoding 编码Correction Lev...

网友评论

      本文标题:C# 二维码

      本文链接:https://www.haomeiwen.com/subject/hndauctx.html