前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >QRCoder 二维码图片生成

QRCoder 二维码图片生成

作者头像
happlyfox
发布2019-10-09 15:25:53
1.2K0
发布2019-10-09 15:25:53
举报
文章被收录于专栏:技术开源分享

参考地址

介绍

QRCoder是一个生成二维码的.Net library。此库体积小,无多余依赖项。使用方便,可以满足正常工作需要。

使用

Nuget 引用QRCoder

image.png

创建项目

生成一个core web 项目,在项目中进行QRCoder的Demo演示。

1、生成web项目

image.png

2、添加引用

image.png

3、新建上层QRCoder控制器 + 新建下层QRCider服务

image.png

4、编码 编写QRCoder的帮助服务类

代码语言:javascript
复制
    public class QRCoderService
    {
        #region  QRCode

        /// <summary>
        /// 生成jpeg 格式 二维码
        /// </summary>
        /// <param name="plainText">文本内容</param>
        /// <param name="pixel">像素</param>
        /// <returns></returns>
        public Bitmap GetQRCode(string plainText, int pixel)
        {
            var generator = new QRCodeGenerator();
            var qrCodeData = generator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);//纠错程度

            var qrCode = new QRCoder.QRCode(qrCodeData);
            var bitmap = qrCode.GetGraphic(pixel);
            return bitmap;
        }
        #endregion



        #region 在二维码中间加入头像
        /// <summary>
        /// 在二维码中间加入头像
        /// </summary>
        /// <param name="plainText">文本内容</param>
        /// <param name="pixel">像素</param>
        /// <param name="logoPath"></param>
        /// <returns></returns>
        public Bitmap GetQRCodeWithLogo(string plainText, int pixel, string logoPath)
        {
            var generator = new QRCodeGenerator();
            var qrCodeData = generator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
            var qrCode = new QRCoder.QRCode(qrCodeData);

            var bitmap = qrCode.GetGraphic(pixel, System.DrawingCore.Color.Black, System.DrawingCore.Color.White, (Bitmap)Image.FromFile(logoPath), 15, 6);
            return bitmap;
        }
        #endregion

        #region 生成svg格式的矢量二维码

        public string GetSvgQRCode(string plainText, int pixel)
        {
            var generator = new QRCodeGenerator();
            var qrCodeData = generator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
            var qrcode = new SvgQRCode(qrCodeData);
            return qrcode.GetGraphic(pixel);
        }
        #endregion

    }

在控制器进行生成图片操作

1、注入上文帮助类至容器中

代码语言:javascript
复制
      services.AddScoped<QRCoderService>();

2、控制器中描述方法

代码语言:javascript
复制
   public class QRCoderController : Controller
    {
        private IHostingEnvironment _hostingEnvironment;
        private readonly QRCoderService _qrCoderService;

        public QRCoderController(QRCoderService qrCoderService, IHostingEnvironment hostingEnvironment)
        {
            _qrCoderService = qrCoderService;
            _hostingEnvironment = hostingEnvironment;
        }


        #region 生成jpeg 格式 二维码

        public IActionResult GetJPEGQRPic()
        {
            //获取QRCoder Bitmap
            var bm = _qrCoderService.GetQRCode("hello world", 15);
            var ms = new MemoryStream();
            bm.Save(ms, ImageFormat.Jpeg);

            return File(ms.GetBuffer(), "image/jpeg");
        }
        #endregion
    }

生成带Icon的图片

代码语言:javascript
复制
        #region 生成带Icon二维码

        public IActionResult GetQRCodeWithLogo()
        {
            var logoPath = $"{_hostingEnvironment.WebRootPath}/icon.png";
            var bm = _qrCoderService.GetQRCodeWithLogo("hello world", 15, logoPath);
            var ms = new MemoryStream();
            bm.Save(ms, ImageFormat.Jpeg);

            return File(ms.GetBuffer(), "image/jpeg");
        }
        #endregion

生成svg图片

代码语言:javascript
复制
        #region 生成svg图片

        public IActionResult GetSvgQRPic()
        {
            var svgText = _qrCoderService.GetSvgQRCode("http://www.baidu.com", 15);
            string rootPath = _hostingEnvironment.WebRootPath;

            string svgName = $"{Guid.NewGuid().ToString()}.svg";
            string filePath = $"{rootPath}/{svgName}";
            System.IO.File.WriteAllText(filePath, svgText);
            var byts = System.IO.File.ReadAllBytes(filePath);
            return File(byts, "image/svg", svgName);
        }
        #endregion
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.10.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 使用
  • 创建项目
  • 在控制器进行生成图片操作
  • 生成带Icon的图片
  • 生成svg图片
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档