vb.net+zxing.net随机彩色二维码、条形码

需要zxing库支持ZXing.NET Generate QR Code & Barcode in C# Alternatives | IronBarcode

效果图:

思路:先生成1个单位的二维码,然后再通过像素填充颜色,颜色数组要通过洗牌算法

洗牌算法

Dim shuffledCards As New List(Of Color)Sub GenColor()shuffledCards.Clear()Dim cards() = {Color.Red, Color.Blue, Color.Green,  Color.Black, Color.Brown}For i = 0 To 40shuffledCards.AddRange(ShuffleArray(cards))NextEnd Sub' Fisher-Yates洗牌算法实现  Function ShuffleArray(ByVal array() As Color) As Color()Dim currentIndex As Integer = array.LengthDim random As New Random()' 当还剩有元素未洗牌时  While currentIndex > 0' 选取一个0到currentIndex之间的随机索引  Dim randomIndex As Integer = random.Next(currentIndex)currentIndex -= 1' 交换当前元素和随机索引处的元素  Dim temp As Color = array(currentIndex)array(currentIndex) = array(randomIndex)array(randomIndex) = tempEnd While' 返回洗牌后的数组  Return arrayEnd Function

色块识别、填充算法(二维码的生成):

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim qr = New Bitmap(GenByZXingNet_Color(Content.Text))If CBRandColor.Checked = True ThenGenColor()Dim k As IntegerFor i = 0 To qr.Height - 1For j = 0 To qr.Width - 1Dim c = qr.GetPixel(j, i)If CInt(c.R) + CInt(c.G) + CInt(c.B) = 0 Thenqr.SetPixel(j, i, shuffledCards(k))End Ifk += 1If k > shuffledCards.Count - 1 Thenk = 0End IfNextNextEnd IfDim zk As Integer = CInt(ZoomK.Value)Dim NewQr = New Bitmap(qr.Width * zk, qr.Height * zk)For i = 0 To qr.Height - 1For j = 0 To qr.Width - 1Dim c = qr.GetPixel(j, i)Dim g = Graphics.FromImage(NewQr)g.FillRectangle(New SolidBrush(c), New Rectangle(j * zk, i * zk, zk, zk))NextNextDestImg.Image = NewQr
End Sub
Public Shared Function GenByZXingNet_Color(ByVal msg As String, ByVal Optional codeSizeInPixels As Integer = 250) As BitmapDim writer As BarcodeWriter = New BarcodeWriter()'writer.Renderer = New ZXing.Rendering.BitmapRenderer With {'        .Background = Color.White,'       .Foreground = Color.Black'   }writer.Format = BarcodeFormat.QR_CODE'writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8")'writer.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H)writer.Options.Height = 1writer.Options.Width = 1writer.Options.Margin = 0Dim img As Bitmap = writer.Write(msg)Return img
End Function

条形码的生成

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickDim options = New ZXing.Common.EncodingOptions()'options.Height = 120'options.Width = 200Dim Writer = New ZXing.BarcodeWriter()'writer.Options = optionsWriter.Format = ZXing.BarcodeFormat.CODE_128Dim qr = Writer.Write(Content.Text)DestImg.Image = qr
End Sub

保存

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickDim save As New SaveFileDialogsave.Filter = "PNG File|*.png|JPG File|*.jpg|BMP File|*.bmp|All File|*.*"save.Title = "选择保存位置"save.FileName = Content.TextIf save.ShowDialog() = DialogResult.OK ThenDestImg.Image.Save(save.FileName)End IfEnd Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/277999.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java八股文(MyBatis Plus)

Java八股文のMyBatis Plus MyBatis Plus MyBatis Plus MyBatis Plus 是什么?它与 MyBatis 有什么区别? MyBatis Plus 是基于 MyBatis 进行扩展的一款持久层框架,它提供了一系列增强功能,简化了 MyBatis 的使用。 与 MyBatis 相比…

K8S POD 启动探针 startupProbe 的使用

当我们启动一个POD 时, 当k8s detect 里面的容器启动成功时, 就会认为这个POD 启动完成了, 通常就会在状态里表示 ready 1/1 … 例如 rootk8s-master:~# kubectl get pods NAME READY STATUS RESTARTS AGE bq-api-demo 1…

有来团队后台项目-解析7

sass 安装 因为在使用vite 创建项目的时候,已经安装了sass,所以不需要安装。 如果要安装,那么就执行 npm i -D sass 创建文件 src 目录下创建文件 目录结构如图所示: reset.scss *, ::before, ::after {box-sizing: border-…

矩阵中移动的最大次数

文章目录 所属专栏:BFS算法 题目链接 思路如下: 1.首先我们需要从第一列开始遍历,寻找每一个都能够满足条件的位置,将它插入到数组里面 2.第一列遍历完了后我们先判断第一列的数是否都满足条件插入到数组里面,如果数组为空&#…

电脑充电器能充手机吗?如何给手机充电?

电脑充电器可以给手机充电吗? 电脑充电器可以给手机充电,但前提是电脑充电器的功率输出与手机的功率匹配且接口匹配。 假设电脑充电器的输出功率为5V/2A,手机也支持5V/2A的输入功率。 只要接口匹配,就可以使用电脑充电器给手机充…

Spring Boot Starter: 快速简明地创建Spring应用

Spring Boot Starter是Spring Boot的核心功能之一,它帮助开发人员快速简明地创建、配置和运行Spring应用。在本文中,我们将详细介绍Spring Boot Starter以及如何使用它创建一个Spring Boot应用。 文章目录 什么是Spring Boot Starter?为何使用Spring B…

Jenkins通知目标服务器拉取Harbor镜像部署

1.告诉目标服务器拉取哪个镜像 2.判断当前有没有正在运行此容器,有就删除 3.接着查看拉取的镜像目标服务器上是否已存在,有就删除 4.拉取Harbor镜像 5.运行容器 目标服务器编写脚本 创建个部署脚本 vim deploy.sh告诉目标服务器Harbor地址、仓库、镜像…

文字弹性跳动CSS3代码

文字弹性跳动CSS3代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 文字弹性跳动CSS3代码

Python入门(四)

选择结构 if结构 if和else同时存在:如果if条件不成立,则执行else语句。只存在if,不存在else:没有else,实际上与空的else 等价。如果if后的条件不成立,那么计算机什么都不用执行。 强制缩进 Python与C语…

Qt文件以及文件夹相关类(QDir、QFile、QFileInfo)的使用

关于Qt相关文件读写操作以及文件夹的一些知识,之前也写过一些博客: Qt关于路径的处理(绝对路径、相对路径、路径拼接、工作目录、运行目录)_qt 相对路径-CSDN博客 C/Qt 读写文件_qt c 读取文本文件-CSDN博客 C/Qt读写ini文件_…

webgl canvas系列——快速加背景、抠图、加水印并下载图片

文章目录 ⭐前言⭐canvas绘制图片💖绘制csdn图片💖给png图片加背景💖cavans下载图片💖cavans上传图片并抠图💖cavans添加文字水印💖inscode 完整代码块 ⭐结束 ⭐前言 大家好,我是yma16&#x…

Java中的内存溢出与内存泄漏深度解析

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

Hadoop学习3:问题解决

文章目录 问题解决1. ERROR: but there is no HDFS_NAMENODE_USER defined2. JAVA_HOME is not set and could not be found.3. Hadoop-DFS页面访问不了4. namenode格式化失败,或者dfs页面打开失败5. ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Ab…

RabbitMQ——死信队列和延迟队列

文章目录 RabbitMQ——死信队列和延迟队列1、死信队列2、基于插件的延迟队列2.1、安装延迟队列插件2.2、代码实例 RabbitMQ——死信队列和延迟队列 1、死信队列 死信队列(Dead Letter Queue,DLQ)是 RabbitMQ 中的一种重要特性,用…

npm包、全局数据共享、分包

使用 npm 包 小程序对 npm 的支持与限制 目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm 包有如下 3 个限制: ① 不支持依赖于 Node.js 内置库的包 ② 不支持依赖于浏览器内置…

C#配置连接数据库字段

在Web.config文件中 添加如下配置 <!--连接数据库字段--><connectionStrings><add name"sql" connectionString"server.;uidsa;pwd8888;databaseArticleWebSite" /></connectionStrings>

Day67:WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网

知识点&#xff1a; 1、Java安全-RCE执行-5大类函数调用 2、Java安全-JNDI注入-RMI&LDAP&高版本 3、Java安全-不安全组件-Shiro&FastJson&JackJson&XStream&Log4j Java安全-RCE执行-5大类函数调用 Java中代码执行的类&#xff1a; GroovyRuntimeExecPr…

【基于HTML5的网页设计及应用】——改变文字和背景颜色

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

JavaWeb:vue、AJax、ELement、maven、SpringBoot、、Http、Tomcat、请求响应、分层解耦

1 Vue 1.1 Vue介绍 VUE是前端框架&#xff0c;基于MVVM&#xff0c;实现数据双向绑定 框架是半基础软件&#xff0c;可重用的代码模型 1.2 Vue指令 <script src"js/vue.js"></script></head> <body><div id"id"><!--…

机器人路径规划:基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(提供Python代码)

一、深度优先搜索算法介绍 深度优先搜索算法&#xff08;Depth-First-Search&#xff09;的基本思想是沿着树的深度遍历树的节点&#xff0c;尽可能深的搜索树的分支。当节点v的所有边都己被探寻过&#xff0c;搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已…