当前位置: 首页 > news >正文

ZXing.Net 的Core平台生成二维码

一、引用

image

二、代码

帮助类
/// <summary>/// ZXing.NET 二维码帮助类/// </summary>public class ZXingHelper{/// <summary>/// 站点二维码的目录/// </summary>private static string QRCodeDirectory = "QRCode";/// <summary>/// 使用zxing动态库生成二维码/// </summary>/// <param name="conetnt">二维码内容</param>/// <param name="logoPath">logo图片路径,默认为空。为空时生成的二维码不带logo</param>/// <param name="height">二维码图片高度,默认240 单位 pixels</param>/// <param name="width">二维码图片宽度,默认240 单位 pixels</param>/// <param name="margin">二维码图片边距,默认为0</param>/// <returns></returns>public static System.DrawingCore.Bitmap GenerateQRCode(string conetnt, string logoPath = "", int height = 240, int width = 240, int margin = 0){try{BarcodeWriter barCodeWriter = new BarcodeWriter();barCodeWriter.Format = BarcodeFormat.QR_CODE;barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H);barCodeWriter.Options.Height = height;barCodeWriter.Options.Width = width;barCodeWriter.Options.Margin = margin;BitMatrix bm = barCodeWriter.Encode(conetnt);System.DrawingCore.Bitmap qrCodeImage = barCodeWriter.Write(bm);if (!string.IsNullOrEmpty(logoPath)){// 添加LogoSystem.DrawingCore.Bitmap logo = new System.DrawingCore.Bitmap(logoPath);int logoSize = (int)(qrCodeImage.Width * 0.2); // Logo大小为二维码大小的1/5int logoX = (qrCodeImage.Width - logoSize) / 2;int logoY = (qrCodeImage.Height - logoSize) / 2;System.DrawingCore.Graphics qrGraphics = System.DrawingCore.Graphics.FromImage(qrCodeImage);qrGraphics.DrawImage(logo, new System.DrawingCore.Rectangle(logoX, logoY, logoSize, logoSize));}return qrCodeImage;}catch (Exception ex){return null;}}/// <summary>///生成二维码/// </summary>/// <param name="message"></param>/// <param name="width"></param>/// <param name="height"></param>/// <returns></returns>public static byte[] Create(string message, int width = 600, int height = 600){try{int heig = width;if (width > height){heig = height;width = height;}if (string.IsNullOrWhiteSpace(message)){return null;}var w = new QRCodeWriter();BitMatrix b = w.encode(message, BarcodeFormat.QR_CODE, width, heig);var zzb = new BarcodeWriter();zzb.Options = new EncodingOptions(){Margin = 0,};var  b2 = zzb.Write(b);byte[] bytes = BitmapToArray(b2);return bytes;}catch (Exception ex){return null;}}/// <summary>/// 将Bitmap  写为byte[]的方法/// </summary>/// <param name="bmp"></param>/// <returns></returns>public static byte[] BitmapToArray(System.DrawingCore.Bitmap bmp){byte[] byteArray = null;using (MemoryStream stream = new MemoryStream()){bmp.Save(stream, ImageFormat.Png);byteArray = stream.GetBuffer();}return byteArray;}}
调用
/// <summary>/// 获取二维码/// </summary>/// <param name="qrUrl"></param>/// <returns></returns>public byte[] GetQrCode(string qrUrl){System.DrawingCore.Bitmap qrImage = null;if (!System.IO.File.Exists(QRCodeLogoPath)){qrImage = ZXingHelper.GenerateQRCode(qrUrl);}else{qrImage = ZXingHelper.GenerateQRCode(qrUrl, QRCodeLogoPath);}MemoryStream ms = new MemoryStream();qrImage.Save(ms, System.DrawingCore.Imaging.ImageFormat.Bmp);byte[] bytes = ms.GetBuffer();ms.Close();//return ZXingHelper.Create(qrUrl);return bytes;}

相关文章:

ZXing.Net 的Core平台生成二维码

一、引用 二、代码 帮助类 /// <summary>/// ZXing.NET 二维码帮助类/// </summary>public class ZXingHelper{/// <summary>/// 站点二维码的目录/// </summary>private static string QRCodeDirectory "QRCode";/// <summary>/// 使…...

【C++】假设给类分配的是栈的空间,那么计算机是如何访问栈中不同位置的对象的数据的呢?

2023年10月22日&#xff0c;周日上午 当在栈上创建一个对象时&#xff0c;计算机会为该对象分配一块连续的内存空间。该内存空间的位置在栈帧中&#xff0c;栈帧是用来存储函数调用信息和局部变量的一块内存区域。 栈帧中包含一个指针&#xff0c;称为栈指针&#xff08;stack…...

iOS使用CoreML运用小型深度神经网络架构对图像进行解析

查找一个图片选择器 我用的是ImagePicker 项目有点老了&#xff0c;需要做一些改造&#xff0c;下面是新的仓库 platform :ios, 16.0use_frameworks!target learnings dosource https://github.com/CocoaPods/Specs.gitpod ImagePicker, :git > https://github.com/KevinS…...

使用Python打造微信高效自动化操作教程

引言 在如今数字化时代&#xff0c;人们对于效率的追求越来越强烈&#xff0c;尤其是在工作和学习中。自动化操作成为了提高生产力的有效途径之一&#xff0c;而PyAutoGUI和Pyperclip作为Python中的两个强大库&#xff0c;为我们实现自动化操作提供了便利。本文将向大家介绍如…...

怎么在爬虫中使用ip代理服务器,爬虫代理IP的好处有哪些?

随着互联网的快速发展&#xff0c;网络爬虫已经成为数据采集、分析和整理的重要工具。然而&#xff0c;随着网络技术的不断发展&#xff0c;许多网站都会采取反爬虫措施&#xff0c;以避免数据被恶意获取。在这种情况下&#xff0c;代理IP服务器就成为了爬虫们的必本备文工将具…...

Typora的相关配置(Typora主题、字体、快捷键、习惯)

Typora的相关配置(Typora主题、字体、快捷键、习惯) 文章目录 Typora的相关配置(Typora主题、字体、快捷键、习惯)[toc]一、主题配置二、字体配置查看字体名称是否可以被识别&#xff1a;如果未能正确识别&#xff1a; 三、习惯配置四、快捷键配置更改提供的功能的快捷键&#…...

守护进程深度分析

思考 代码中创建的会话&#xff0c;如何关联控制终端&#xff1f; 新会话关联控制终端的方法 会话首进程成功打开终端设备 (设备打开前处于空闲状态) 1、关闭标准输入输出和标准错误输出2、将 stdin 关联到终端设备&#xff1a;STDIN_FILENO > 03、将 stdout 关联到终端设…...

SpringAMQP

SpringAMQT RabbitMQ安装与部署RabbitMQ结构简单队列模型 SpringAMQP依赖引入配置RabbitMQ连接信息基本模型简单队列模型WorkQueue模型 发布订阅模型FanoutExchangeDirectExchangeTopicExchange 消息转换器 消息队列是实现异步通讯的一种方式&#xff0c;我们将从RabbitMQ为例开…...

深入探索Sharding JDBC:分库分表的利器

随着互联网应用的不断发展和用户量的不断增加&#xff0c;传统的数据库在应对高并发和大数据量的场景下面临着巨大的挑战。为了解决这一问题&#xff0c;分库分表成为了一个非常流行的方案。分库分表主流的技术包括MyCat和Sharding JDBC。我们来通过一张图来了解这两者有什么区…...

Java后端模拟面试 题集④

1.你先作个自我介绍吧 面试官您好&#xff0c;我叫张睿超&#xff0c;来自湖南长沙&#xff0c;大学毕业于湖南农业大学&#xff0c;是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。 大学里面主修的课程是Java、Python、数字图…...

中国5G产业全景图谱报告2022_挚物AIoT产业研究院

中国5G产业全景图谱报告2022_挚物AIoT产业研究院 产业结构 5G 产业结构主要包括接入网、传输网、核心网、电信运营商、网络配套服务商、5G 应用生态及产业服务 7 个主要板块。根据各版块中主要市场参与者提供的产品和服务&#xff0c;又下分子版块。 &#xff08;1&#xff…...

设计链表复习

设计链表 class ListNode {int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val val;}public ListNode(int val, ListNode next) {this.val val;this.next next;}}class MyLinkedList {//size存储链表元素的个数int size;//虚拟头节点ListNode…...

在 Visual Studio Code (VS Code) 中设置

在 Visual Studio Code (VS Code) 中设置代理服务器的详细教程如下&#xff1a; 打开 Visual Studio Code。 在顶部菜单栏中&#xff0c;点击 "File"&#xff08;文件&#xff09; > "Preferences"&#xff08;首选项&#xff09; > "Settings…...

2023年拼多多双11百亿补贴新增单件立减玩法介绍

2023年拼多多双11百亿补贴新增单件立减玩法介绍 拼多多启动了11.11大促活动&#xff0c;主题为“天天11.11&#xff0c;天天真低价”。消费者享受多重优惠&#xff0c;包括满减、百亿补贴和单件立减等。百亿补贴新增玩法&#xff0c;有超过20000款品牌商品参与单件立减活动。 …...

面试题 01.06. 字符串压缩

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;面试题 01.06. 字符串压缩 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 计算压缩后的字符串长度&#xff0c;如果该长度小于原字符串长度&#xff0c;返回压缩后的字符串&#xff0c;否则…...

那些你面试必须知道的webpack知识点

目录 1、webpack介绍和简单使用1.1 什么是webpack&#xff1f;1.2 安装webpack1.3 简单使用一下webpack 2、webpack的入口与输出2.1 入口(entry)2.2 输出(output) 3、入口多种配置方法3.1 多文件打包成一个文件3.2 多文件打包成多文件 4、loader的概念5、压缩打包HTML5.1 使用步…...

十四、队列函数

1、概述 (1)使用队列的流程&#xff1a;创建队列、写队列、读队列、删除队列。 2、创建 队列的创建有两种方法&#xff1a;动态分配内存、静态分配内存。 2.1、动态分配内存 (1)函数&#xff1a;xQueueCreate&#xff0c;队列的内存再函数内部动态分配。 (2)函数原型如下&…...

使用高防服务器有什么好处?103.216.155.x

为什么建议租用高防服务器 第一&#xff0c;高防服务器由于业务的特殊性&#xff0c;本身机器的配置要求高&#xff0c;服务器的价格相比普通的贵&#xff0c;而且&#xff0c;机器还有维护费、托管费等&#xff0c;这会让运营的成本上升。 第二&#xff0c;租用高防服务器&a…...

Android笔记(七)Android JetPack Compose组件搭建Scaffold脚手架

在去年2022年曾发布一篇关于脚手架的文章&#xff1a;“Android JetPack Compose组件中Scaffold的应用” 。但是Android的版本从12变更到13及以上版本&#xff0c;导致一些细节的实现存在不同。在本文中&#xff0c;将从头开始介绍整个脚手架的搭建过程。 一、新建项目模块 在…...

Git合并某个分支上的某个提交

1. 首先&#xff0c;确保你当前所在的分支是你要合并分支的父分支。你可以使用以下命令切换到父分支&#xff1a; git checkout <父分支名称> 2. 确保你要合并的分支是可用的。你可以使用以下命令查看所有可用的分支&#xff1a; git branch -a 这将显示所有本地和远程…...

从模型部署反推:为什么你的GPU显存总是不够用?聊聊Params、FLOPs与显存占用的真实关系

从模型部署反推&#xff1a;为什么你的GPU显存总是不够用&#xff1f;聊聊Params、FLOPs与显存占用的真实关系 当你兴冲冲地将训练好的模型部署到生产环境时&#xff0c;是否经常遇到这样的场景&#xff1a;明明参数量&#xff08;Params&#xff09;看起来不大&#xff0c;但G…...

告别MATLAB环境:保姆级教程教你用App Designer打包独立EXE(含Runtime配置避坑)

MATLAB App Designer应用打包实战&#xff1a;从开发到分发的全流程指南 在工程计算和科研领域&#xff0c;MATLAB一直是不可或缺的工具。随着App Designer的推出&#xff0c;开发交互式GUI应用变得前所未有的简单。但当你完成了一个优秀的应用后&#xff0c;如何让没有MATLAB环…...

GTE+SeqGPT入门指南:GTE-Chinese-Large输出向量维度与归一化说明

GTESeqGPT入门指南&#xff1a;GTE-Chinese-Large输出向量维度与归一化说明 1. 项目概述&#xff1a;语义搜索与轻量生成的完美组合 今天我们来聊聊一个特别实用的AI项目——GTESeqGPT组合。这个镜像把两个很厉害的模型打包在一起&#xff0c;让你能快速搭建一个智能问答系统…...

大模型学习-python基础Day9

一.模块与包模块是包含Python代码的文件&#xff0c;通常以.py为扩展名。模块可以包含函数、类、变量或可执行代码&#xff0c;用于将相关功能组织在一起&#xff0c;便于代码复用和维护。模块的作用代码复用&#xff1a;将常用功能封装为模块&#xff0c;避免重复编写相同代码…...

Rhino 7 + Grasshopper 实战:用‘几何管道’和‘命名视图’提升BIM/参数化建模效率

Rhino 7 Grasshopper 实战&#xff1a;用‘几何管道’和‘命名视图’提升BIM/参数化建模效率 在建筑与工业设计领域&#xff0c;参数化建模已经从先锋技术转变为行业标配工具。当设计迭代以小时甚至分钟为单位进行时&#xff0c;传统建模软件的手动操作模式显得力不从心。Rhi…...

高精度计算插件 decimal.js 处理 JS 浮点数精度问题(. + . !== .)

OCP原则 ocp指开闭原则&#xff0c;对扩展开放&#xff0c;对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则&#xff08;DIP&#xff09; 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程&#xff0c; 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

深度解锁NVIDIA显卡隐藏性能:从基础配置到专家级调校的完整指南

深度解锁NVIDIA显卡隐藏性能&#xff1a;从基础配置到专家级调校的完整指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾因游戏画面撕裂而烦恼&#xff1f;是否觉得显卡性能未能完全发挥&am…...

Win10家庭版升级专业版后,5分钟搞定VMware与Device Guard的兼容问题(附完整代码)

Win10专业版环境下VMware与Device Guard冲突的深度解决方案 当Windows 10家庭版用户升级到专业版后&#xff0c;往往会遇到一个棘手问题&#xff1a;VMware等虚拟机软件与系统内置的Device Guard和Credential Guard安全功能产生冲突。这种兼容性问题不仅影响虚拟机的正常使用&a…...

【Anybus】网关配置教程

Anybus X-gateway网关配置软件下载与使用&#xff1a; 系列:Ethernet Modbus-TCP Slave-PROFINET IO Slave &#x1f4e2; 操作有风险&#xff0c;动手需谨慎&#xff01; 文章目录Anybus X-gateway网关配置软件下载与使用&#xff1a;一、模块用前需准备二、连接模块与电脑通…...

别再死记硬背了!一张图帮你理清二叉树、AVL树、红黑树、B树、B+树的区别与选型

可视化决策指南&#xff1a;二叉树家族核心差异与工程选型实战 当你面对MySQL索引设计、语言标准库实现或系统架构优化时&#xff0c;是否曾被各种树结构的选型问题困扰&#xff1f;二叉查找树、AVL树、红黑树、B树与B树这五大经典结构&#xff0c;各自在时间复杂度、空间利用率…...