吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1749|回复: 9
收起左侧

[C#] C#生成二维码的两种方式(快看二维码)

[复制链接]
迷恋自留地 发表于 2021-11-21 17:44

前言

最近在做项目的时候遇到一个需求是将文本内容生成二维码图片的,对于这个需求那就直接上手(两种方法,我比较喜欢第二种方式,往上面也是有很多的方法。这里只作为个人纪录)

方法一:ThoughtWorks.QRCode

还有解析,并且还能添加彩色的点,应该是基于Drawing的
效果图

第一步: NeGet包引用ThoughtWorks.QRCode

using System;
using System.Drawing;
using System.Text;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
            qrCodeEncoder.QRCodeScale = 4;
            qrCodeEncoder.QRCodeVersion = 8;
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
            System.Drawing.Image image = qrCodeEncoder.Encode("http://weixin.qq.com/r/qzj377TEKulVrfCM9225", Encoding.UTF8);
            string filename = Guid.NewGuid() + ".jpg";
            string filepath =  filename;
            System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
            image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
            fs.Close();
            image.Dispose();

            //二维码解码
            var codeDecoder = CodeDecoder(filepath);

            Console.WriteLine($"二维码内容:{codeDecoder}");
            Console.WriteLine("---");
            Console.Read();
        }

        /// <summary>
        /// 二维码解码
        /// </summary>
        /// <param name="filePath">图片路径</param>
        /// <returns></returns>
        public static string CodeDecoder(string filePath)
        {
            if (!System.IO.File.Exists(filePath))
                return null;
            Bitmap myBitmap = new Bitmap(Image.FromFile(filePath));
            QRCodeDecoder decoder = new QRCodeDecoder();
            string decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap), Encoding.UTF8);
            return decodedString;
        }
    }
}

方法二:QRCoder

我喜欢这个方法,先上效果图,这个可以自定义图片,而且还有边框,其他的方法暂时没有研究

在这里插入图片描述
第一步: NeGet包引用ThoughtWorks.QRCode

using System;
using System.Drawing;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            System.Drawing.Image image = code("http://weixin.qq.com/r/qzj377TEKulVrfCM9225", 5,10, "C:\\Users\\Pride\\Pictures\\myimage\\1.jpg", 15,1,true);
            string filename = Guid.NewGuid() + ".jpg";
            string filepath =  filename;
            System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
            image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
            fs.Close();
            image.Dispose();
            Console.WriteLine("OK");
            Console.Read();
        }

        /// <summary>
        /// 生成二维码
        /// </summary>
        /// <param name="msg">信息</param>
        /// <param name="version">版本 1 ~ 40</param>
        /// <param name="pixel">像素点大小</param>
        /// <param name="icon_path">图标路径</param>
        /// <param name="icon_size">图标尺寸</param>
        /// <param name="icon_border">图标边框厚度</param>
        /// <param name="white_edge">二维码白边</param>
        /// <returns>位图</returns>
        public static Bitmap code(string msg, int version, int pixel, string icon_path, int icon_size, int icon_border, bool white_edge)
        {

            QRCoder.QRCodeGenerator code_generator = new QRCoder.QRCodeGenerator();

            QRCoder.QRCodeData code_data = code_generator.CreateQrCode(msg, QRCoder.QRCodeGenerator.ECCLevel.M/* 这里设置容错率的一个级别 */, true, true, QRCoder.QRCodeGenerator.EciMode.Utf8, version);

            QRCoder.QRCode code = new QRCoder.QRCode(code_data);

            Bitmap icon = new Bitmap(icon_path);

            Bitmap bmp = code.GetGraphic(pixel, Color.Black, Color.White, icon, icon_size, icon_border, white_edge);

            return bmp;

        }
    }
}


你喜欢哪种方式呢?

The birth of life is a pleasant surprise.Life is you.
是惊喜,生活是你的点赞分享传统美德
Date:2021-11-21    今晚打老虎!

https://hunji.xyz/archives/116.html

免费评分

参与人数 2热心值 +2 收起 理由
StephenMao + 1 谢谢@Thanks!
MXGT + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 迷恋自留地 发表于 2021-11-21 18:33
zpy2 发表于 2021-11-21 18:12
谢谢分享。
博客不错,还能只能换肤,咋做的?

typecho找handsome主题

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zpy2 + 1 + 1 谢谢@Thanks!

查看全部评分

zpy2 发表于 2021-11-21 18:12
谢谢分享。
博客不错,还能只能换肤,咋做的?
chishingchan 发表于 2021-11-21 18:45
这功能一般调用 DLL 库文件,楼主是直接编程吗?
 楼主| 迷恋自留地 发表于 2021-11-21 18:51
chishingchan 发表于 2021-11-21 18:45
这功能一般调用 DLL 库文件,楼主是直接编程吗?

Neget引用,然后上面是两种方式的全部代码,需要的帮助可以扫一扫上面的二维码
wldbh 发表于 2021-11-21 18:55
不懂就问,这不是java吗?
cn005897 发表于 2021-11-21 19:28
博客是自己手撸的吗
kenergy 发表于 2021-11-21 21:30
收藏下,现在都是通过调用软件生成的
 楼主| 迷恋自留地 发表于 2021-11-23 16:36
wldbh 发表于 2021-11-21 18:55
不懂就问,这不是java吗?

C#哦,微软的语言
 楼主| 迷恋自留地 发表于 2021-11-23 16:37
cn005897 发表于 2021-11-21 19:28
博客是自己手撸的吗

不是的哦,typecho 里面找handsonde主题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2022-10-1 21:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表