轻量级二维码生成器

2024-06-20 21:12

本文主要是介绍轻量级二维码生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提起 Java 的二维码生成器,相信大家都会想起 ZXing(Zebra Crossing),可是当笔者搜索 ZXing 的替代时候,却发现难以替代——原本想着有没有几个类简简单单地就可以实现二维码生成的,却几乎没有,倒是其他语言例如 JavaScript 就有原生生成二维码的,而且 Java 更多的,是基于 ZXing 的封装方案。当然了,单凭笔者自身的水平,写是不可能自己去写一个出来的——顶多只能学习、观摩别人开源的,进一步再加以封装而已。在机缘巧合的情况下,笔者终于一个轻量级的二维码生成项目: 来自日本 Nayuki 大神的 QR Code generator library https://github.com/nayuki/QR-Code-generator,仅仅若干关键几个类就可以生成二维码,而且功能不弱,文档注释丰富,是学习二维码生成原理的好项目。

QR-Code-generator 特点如下:

  • 除了 JDK 免依赖
  • 支持编码所有40个版本(大小)和所有4个错误校正级别,符合 QR Code 模型2 标准
  • 输出格式:QR 码符号的原始模块/像素
  • 比其他实现更准确地检测定位符类似的惩罚模式
  • 编码数字和特殊字母数字文本时占用的空间比一般文本少
  • 用户可以指定允许的最小和最大版本号,然后库将自动选择范围内适合数据的最小版本
  • 用户可以手动指定掩码模式,否则库将自动评估所有8个掩码并选择最优的一个
  • 用户可以指定绝对错误校正级别,或允许库在不增加版本号的情况下提升它
  • 用户可以手动创建数据段列表并添加 ECI 段
  • 将日文 Unicode 文本编码为汉字模式,与 UTF-8 字节相比可节省大量空间
  • 为包含混合数字/字母数字/一般/汉字部分的文本计算最优的段模式切换
  • 支持 png/svg 格式导出

笔者在 QR-Code-generator 基于上重构,fork 出了一个开源版本:https://github.com/lightweight-component/aj-qrcode,改善如下:

  • 原本提供普通版本和加速版本(原作者有优化)的,现在重构后合并在一个工程,均可调用两者
  • 把不规范的注释重新整理,并补充了部分注释、翻译了部分注释
  • 进一步精简代码

Maven 坐标

<dependency><groupId>com.ajaxjs</groupId><artifactId>aj-qrcode</artifactId><version>1.0</version>
</dependency>

Java Documents: https://dev.ajaxjs.com/docs/javadoc/aj-qrcode/。

用法

String text = "Hello, world!";          // User-supplied Unicode text
Ecc errCorLvl = Ecc.LOW;  // Error correction level
QrCode qr = QrCode.encodeText(text, errCorLvl);  // Make the QR Code symbolBufferedImage img = Utils.toImage(qr, 10, 4);          // Convert to bitmap image
File imgFile = new File("hello-world-QR.png");   // File path for output
ImageIO.write(img, "png", imgFile);              // Write image to fileString svg = Utils.toSvgString(qr, 4, "#FFFFFF", "#000000");  // Convert to SVG XML code
File svgFile = new File("c:\\temp\\hello-world-QR.svg");          // File path for output
Files.write(svgFile.toPath(), svg.getBytes(StandardCharsets.UTF_8)); // Write image to file

这篇关于轻量级二维码生成器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079267

相关文章

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

纸牌函数生成器

此模板用来生成纸牌类的测试数据,本人手打,不合理或缀余的地方希望大神指出。 T=10000(测试数据组数), t (两摞相等的牌,每摞牌的数量); 每张牌用A,2~9,T,J,Q,K;表示牌面大小; 用S,H,C,D;表示花色。 共52张牌。 #include<stdio.h>#include<time.h>#include<stdlib.h>#include<string.