.NET/C# 生成二维码

这篇具有很好参考价值的文章主要介绍了.NET/C# 生成二维码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 大家好,在本章是如何通过.net/C#来生成二维码
  • 首先大家还是需要仔细阅读这篇文档有小细节就需要注意
  • 大家需要生成一些类,把我的方法复制进去,如果不想添加类的话,大家需要再主代码上更改引用信息找到我们所添加的方法
  • 不适用于零基础的朋友,适用于有点经验的懂一点代码的就行

1、首先我们新建一个自己的项目.net core 或其他项目新建好后新建一个控制器我们需要在里面写自己的代码,在控制器里面生成一个index页面如下是我的index页面。

.NET/C# 生成二维码

 上方是我的前台页面,里面主要的就是那个按钮,我呢是通过这个按钮把我的一张图片做成了二维码的内容,大家可以把自己想变成二维码的内容弄进去,这里我只弄功能。

.NET/C# 生成二维码

上面那个是二维码结构图片

2、前台页面的代码是这样的,大家肯定会和我的不一样,也没关系,只要作用是一样的就行,大致就是需要一个生成二维码的按钮和点击后弹出二维码。前台代码大家尽量别复制,大家按照自己的写就行了。

//一个按钮用来触发
<script type="text/html" id="barList">
      <a class="layui-btn  layui-btn-xs" lay-event="live">图片二维码</a>
</script>

//触发后弹出的二维码
<div class="QRCodeDownload" style="display:none;">

    <img class="QRCodeImg" id="QRCodeImg" style="display:block;width:250px;height:250px;margin:0 auto;margin-top:20px;" />
    <div id="ActivityTitle" style="text-align:center;"></div>
    <div style="display:inline-block;width:160px;margin-left:15px;"><p style="display:inline-block;">二维码尺寸为:</p><input type="number" min="200" max="2000" class="layui-input" id="slideCon1" value="250" style="width:60px;display:inline-block;"></div><div id="slide1" class="slider1" style="width:60%;display:inline-block;margin-left:10px;"></div>
    <input type="hidden" id="codeContent1" value="250">

    @*<input type="text" name="ActivityTitle" id="ActivityTitle" placeholder="" autocomplete="off" class="layui-input" style="width: 460px; margin-left: 15px">*@

    <input type="text" name="Activitylink" id="Activitylink" placeholder="" autocomplete="off" class="layui-input" style="width:460px; margin:10px auto 0;">
</div>

3、有了HTMl代码肯定也要有ajax请求的方法:主要有一下几个步骤,首先是监听一下页面是否点击了我们的二维码按钮,点击后应该请求的接口是哪个。下面是我的请求方法,大家也是不要复制,按照自己的前端代码写就行,我们主要是实现后台代码。我这个你们复制过去也不管用,所以看看逻辑就行。

//我们不管通过什么办法进行监听都可以我这里用的是表格所以我就监听表格里面的二维码按钮
case 'live':
            //我这里的这个src是二维码内容大家到时候根据自己的改就行
           var src =''
           if (data.WaysRegistration == 1) {
           src = data.ImgUrl
           } else {
               src = data.ImgUrl
           console.log(src)
               console.log(obj)
           }

           $("#Activitylink").val(src)

           $("#ActivityTitle").text('活动码-' + data.Name)
           $("#btn").attr("data-clipboard-text", src);
           showQRcode(src)

           break;


//下面这个是我们点击按钮后请求接口的方法
function showQRcode(src) {

                layer.open({
                    title: '扫码预览',
                    area: ["600px", "600px"],
                    type: 1,
                    shade: false,
                    content: $('.QRCodeDownload'),
                    success: function () {
                        var index = layer.load(1);

                        $.ajax({
                            //请求地址
                            url: UrlBase + "UserQRCode/GetQRCode",
                            type: "post",
                            dataType: "JSON",
                            data: {
                                //传过去三个参数:宽、高、内容
                                width: 250,
                                height: 250,
                                content: src
                            },
                            success: function (res) {

                                $(".QRCodeImg").attr("src", res.Result);
                                layer.close(index);
                            }
                        })

                    },
                    cancel: function (index, layero) {
                        layer.closeAll();
                        $(".QRCodeDownload").hide();
                    }
                })

            }

上面就是关于JS监听并且请求接口的方法逻辑,主要就是监听点击按钮事件、点击后弹出二维码窗口事件、展示二维码。主要分为这三种;

4、我们准备好上方的前台代码后,切记:不要复制我的前台代码只给大家提供一个逻辑思路,大家自己写前台。接下来我们就要写后台代码非常简单无脑操作。大家首先需要新建几个类因为我们接下来会引用到里面的方法。

大家直接复制就好。死操作:

第一个类:Response类

//这个类里面只需要这一个方法就行    


    /// <summary>
    /// WEBAPI通用返回泛型基类
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class Response<T> : Response
    {
        /// <summary>
        /// 回传的结果
        /// </summary>
        public T Result { get; set; }
    }

第二个类:QRCodeHelper类,是我们的主要生成二维码的方法

//方法大家直接复制就好了,缺少引用就添加引用缺什么就引用什么

private static byte[] BitmapToBytes(Bitmap bitmap)
        {
   
            MemoryStream ms = new MemoryStream();
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] bytes = ms.GetBuffer();  //byte[]   bytes=   ms.ToArray(); 这两句都可以,至于区别么,下面有解释
            ms.Close();
            return bytes;
        }

        public static string QRCodeExecute(string str, int size)
        {
            QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
            //QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, QRCodeGenerator.ECCLevel.Q);
            QRCode qrcode = new QRCode(qrCodeData);
            Bitmap qrCodeImage = qrcode.GetGraphic(8, Color.Black, Color.White, null, 15, 6, false);

            /*
            * 550为宽高
            * +60为上下左右各留出30的空白区域

            */
            Bitmap newBM = new Bitmap(size + 30, size + 30);

            //新画布
            Graphics newGP = Graphics.FromImage(newBM);
            //清除所有背景色并指定背景颜色
            newGP.Clear(Color.White);
            // 插值算法的质量
            newGP.InterpolationMode = InterpolationMode.HighQualityBicubic;

            newGP.DrawImage(qrCodeImage, new Rectangle(15, 15, size, size), new Rectangle(0, 0, qrCodeImage.Width, qrCodeImage.Height), GraphicsUnit.Pixel);

            //var bytes = BitmapToBytes(newBM);
            using var ms = new MemoryStream();
            newBM.Save(ms, ImageFormat.Jpeg);
            var bytes = ms.GetBuffer();
            newGP.Dispose();
            newBM.Dispose();
            qrGenerator.Dispose();
            var StrBase64 = "data:image/png;base64," + Convert.ToBase64String(bytes);
            return StrBase64;
            //string fileName = $"{Guid.NewGuid()}.jpg";
            //return UploadHelp.Execute(bytes, fileName, UploadFileType.QrCode, UploadFunEnum.blob);
        }

第三个类:需要引用一个返回值的类:JsonHelper文章来源地址https://www.toymoban.com/news/detail-456498.html

//里面只需要有这两样东西,我们只需要用到这两个所提供的返回值类型


public static JsonHelper Instance { get { return _jsonHelper; } }

        public string Serialize(object obj)
        {
            return JsonConvert.SerializeObject(obj, new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
        }

5、我们新建好上方的三个类之后,把方法也复制进去后,并且添加引用了,接下来操作就非常简单了,我们只需要写我们所请求的接口方法;一定要引用我们刚新创建的那三个类和别的引用。


//前面也说了,前台会给我们传过来三个参数,一个是二维码内容,一个是宽,一个是高
        [HttpPost]
        public string GetQRCode(string content, int width, int height)
        {
            Response<string> Result = new Response<string>();

            var QRCode = QRCodeHelper.QRCodeExecute(content, size: width);
            if (!string.IsNullOrEmpty(QRCode))
            {
                Result.Result = QRCode;
            }
            else
            {
                Result.Code = -100;
                Result.Message = "下载失败";
            }
            return JsonHelper.Instance.Serialize(Result);
        }

6、这就是我们本次的生成二维码的方法了,大家有哪里不懂得可以下方留言问我,前台页面大家尽量不要复制粘贴,因为我们这个文章主要是讲述的后台代码,前台代码我只给大家提供思路和逻辑,只要请求不错,监听不错,就绝对能行

切记一定要添加引用啊!!还有自己起的类的名字一定要和调用时候名字统一啊!!!!否则肯定会报错的!!

到了这里,关于.NET/C# 生成二维码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .NET Core使用SkiaSharp快速生成二维码( 真正跨平台方案)

    在.NET 6之前我们一直是使用QRCoder来生成二维码(QRCoder是一个非常强大的生成二维码的组件,用到了 System.Drawing.Common  包),然后从.NET 6开始,当为非 Windows 操作系统编译引用代码时,平台分析器会发出编译时警告。异常如下: 由于 System.Drawing.Common 被设计为 Windows 技术的精

    2024年01月20日
    浏览(60)
  • 如何生成微信小程序二维码,小程序内页二维码

    你自己得有个微信公众号,只需要知道小程序的名字就可以了 生成小程序二维码 第一步编辑素材 第二步搜索小程序名字,然后回车,下一步 第三步选小程序码 小程序内页二维码 第一步编辑素材 第二步搜索小程序名字,然后回车,下一步 第三步点击‘获取更多路径’ 第四

    2024年02月15日
    浏览(51)
  • 生成微信小程序发布上线后的二维码 、获取微信小程序二维码、微信小程序二维码如何生成?

    情景: 1、在微信小程序审核完成,发布到线上后,想通过扫描小程序二维码进入小程序 2、可分享二维码出去,通过二维码扫码进入小程序 方法: 1、进入微信小程序的后台配置。链接:微信公众平台。(如图一) 2、进入 “设置” -- “ 基本设置” -- “小程序码及线下物

    2024年02月12日
    浏览(57)
  • 二维码生成解析用ZXing.NET就够了,不要再引一堆生成和解析库了

    ZXing.NET 是一个开源的、功能强大的二维码处理库,它能够对二维码进行解码(读取信息)和编码(生成二维码)。ZXing 是 \\\"Zebra Crossing\\\" 的缩写,是一个跨平台的、用于解码和生成条形码和二维码的库。以下是一些 ZXing.Net 的主要功能通过实例讲解。 这些示例演示了 ZXing.Net 的

    2024年02月04日
    浏览(42)
  • C# 通过TSPL(PUTBMP)指令打印由Bitmap生成的二维码图片

    PUTBMP命令只支持打印位深为1或8的bmp图片。 Bitmap生成二维码可以用ZXing.Net库。 可参考 C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一) - 天马3798 - 博客园 (cnblogs.com) 如果Bitmap.Save()方法生成的是24位深图片,需要先做位数转换。 可参考 彩色/灰色Bmp 转单色 - jo

    2024年02月12日
    浏览(58)
  • Thinkphp6 如何 生成二维码

    来自:https://www.is5.me/notes/php/633.html

    2024年02月11日
    浏览(45)
  • 微信小程序使用--如何生成二维码

    一、生成二维码 1.获取token 参照官方文档说明: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html 其中grant_type是写死的,appid和secret是注册小程序的时候获取的,然后会得到一个默认两小时失效的token 2.获取二维码 参照官方文档说明: https://developers.

    2024年02月04日
    浏览(61)
  • 干货|如何生成和展示二维码(前后端)

    前端、后端都可以生成二维码,轮子很多,今天分别来分享一下前后端如何使用轮子生成二维码的方法。 后端:选择一款合适的二维码生成库,如zxing、qrcode等,并在后端代码中引入该库。编写代码,根据业务需求生成相应的二维码图像,并将其输出为二进制流。 前端:使用

    2024年02月11日
    浏览(47)
  • 如何使用Stable Diffusion生成艺术二维码?

    物理内存:至少16G(8G直接安装阶段就卡死) N卡:此处我使用GTX 1660 6G (2019年双12购买) windows 11 网络要通畅 git: https://git-scm.com/download/win Python: https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe CUDA驱动:https://developer.nvidia.com/cuda-toolkit-archive 如何查看下载哪个版本的CUDA驱动?

    2024年02月08日
    浏览(105)
  • 如何生成WIFI二维码供手机扫一扫连接WIFI

    用户到线下实体商家消费时有连接商家WiFi需求,传统的方式是商家直接告诉你WiFi密码或者将WiFi密码贴在墙上,你在手机上找到商家对应的WiFi输入密码进行连接(这种方式费时费力,密码复杂点的还容易输入错)。 WIFI 表示这个是一个连接 WiFi 的协议 S 表示后面是 WiFi 的 S

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包