• C#生成二维码 使用ZXing.Net和ThoughtWorks.QRCode


    很久之前写过一篇js前端生成二维码的博客https://www.cnblogs.com/liuzheng0612/p/10870652.html

    今天主要讲解C#服务端生成二维码的方法

    方法一:ZXing.Net

    1.首先需要引用相关包,直接NuGet找ZXing.Net,安装最新稳定版本就可以了

    2.代码

            private void btn_ZXing_Click(object sender, EventArgs e)
            {
                int height = 100; int.TryParse(txt_height.Text, out height);//二维码高度
                int width = 100; int.TryParse(txt_width.Text, out width);//二维码宽度
                string rqcodeData = txt_zxingUrl.Text;//二维码url
                if (string.IsNullOrWhiteSpace(rqcodeData))
                {
                    MessageBox.Show("请填写二维码url"); return;
                }
    
                //配置二维码规格
                QrCodeEncodingOptions qr = new QrCodeEncodingOptions();
                qr.CharacterSet = "UTF-8";
                qr.Height = height;
                qr.Width = width;
                qr.Margin = 0;
    
                //生成二维码位图
                BarcodeWriter wr = new BarcodeWriter();
                wr.Format = BarcodeFormat.QR_CODE;//选择二维码,还可以选择条码,类型有很多
                wr.Options = qr;
                Bitmap bitmap = wr.Write(rqcodeData);
    
                //因为这个是winform项目所以我直接就给pictureBox绑定图片了
                pic_zxing.Image = Image.FromHbitmap(bitmap.GetHbitmap());
    
                //也可以保存到本地
                string fileDirectory = AppDomain.CurrentDomain.BaseDirectory + @"encode";
                string fileName = Guid.NewGuid().ToString("N") + ".jpg";
                if (Directory.Exists(fileDirectory) == false)
                    Directory.CreateDirectory(fileDirectory);
                string newName = Path.Combine(fileDirectory, fileName);
                bitmap.Save(newName, ImageFormat.Jpeg);
    
                bitmap.Dispose();
            }

    方法二:ThoughtWorks.QRCode

    1.同样需要引用dll文件,NuGet找ThoughtWorks.QRCode安装最新稳定版本

    二.代码

            private void btn_twqr_Click(object sender, EventArgs e)
            {
                int size = 4;//二维码大小,值越大像素越大
                int.TryParse(txt_size.Text, out size);
                string rqcodeData = txt_twqr.Text;//二维码url
                if (string.IsNullOrWhiteSpace(rqcodeData))
                {
                    MessageBox.Show("请填写二维码url"); return;
                }
    
                QRCodeEncoder encoder = new QRCodeEncoder();
                encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
                encoder.QRCodeScale = size;
                encoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
                encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//错误效验、错误更正(有4个等级)
                //encoder.QRCodeBackgroundColor = Color.Yellow;//背景颜色
                //encoder.QRCodeForegroundColor = Color.Green;//字体颜色
    
                Bitmap bitmap = encoder.Encode(rqcodeData);//生成二维码
                pic_twqr.Image = Image.FromHbitmap(bitmap.GetHbitmap());
    
                bitmap.Dispose();
            }

    以上2种应该是目前比较常用的C#生成二维码方式:

    Zxing支持数据二维码数据很长, 

    houghtWorks.QRCode支持二维码数据短一点,效率要快一点

    下面是一个小demo

  • 相关阅读:
    Java实现第十届蓝桥杯组队
    Java实现第十届蓝桥杯组队
    Java实现第十届蓝桥杯组队
    Java实现第十届蓝桥杯组队
    Java实现第十届蓝桥杯组队
    程序员加班奇遇
    Spring Boot导出jar包发布
    Eclipse工具栏太多,自定义工具栏,去掉调试
    ${pageContext.request.contextPath}的解释以及和request.contextPath的区别
    request 获取各种路径
  • 原文地址:https://www.cnblogs.com/liuzheng0612/p/16121154.html
Copyright © 2020-2023  润新知