轻量级二维码生成器

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

相关文章

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个,在线3D定制引擎Myway 3D。 用于在线商品定制,比如个性化服装的定制、日常用品(如杯子)、家装(被套)等物品的在线定制。 特性列表: 可更换衣服款式,按需定制更换模型可实时更改材质颜色可实时添加文本,并可实时修改大小、颜色和角度,支持自定义字体可实时添加艺术图标,并可实时修改大小、颜色和角度,支持翻转、各种对齐可更改衣服图案,按需求定制

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c

android 带与不带logo的二维码生成

该代码基于ZXing项目,这个网上能下载得到。 定义的控件以及属性: public static final int SCAN_CODE = 1;private ImageView iv;private EditText et;private Button qr_btn,add_logo;private Bitmap logo,bitmap,bmp; //logo图标private st

Android 二维码、条形码(识别率校验)

ZxingCode 以core-3.4.jar为基础构建,具有如下功能: 1.创建条形码、二维码; 2.相机扫描条形码、二维码; 3.读取照片条形码、二维码; 4.识别率算法修改提升; 5.扫码View背景颜色可修改; FIX-2022.5.12.1 1.新增手电筒开关调用方法; 2.新增暂停解码方法; 3.新增恢复解码方法; 4.虚拟机扫码崩溃; 5.OnScanCodeListener统

轻量级控件SnackBar使用以及源码分析

本篇博客将会给大家带来一个轻量级控件SnackBar,为什么要讲SnackBar?Snackbar:的提出实际上是界于Toast和Dialog的中间产物。因为Toast与Dialog各有一定的不足,使用Toast的时候, 用户无法交互;使用Dialog:用户可以交互,但是体验会打折扣,会阻断用户的连贯性操作;但是使用Snackbar既可以做到轻量级的用户提醒效果,又可以有交互的功能,本博客将会从S

vuejs中html2canvas使用 背景图和二维码海报图片保存到一张图片上 生成一张海报并下载

不少的项目中都用到了二维码加背景图片生成海报的宣传图片,实现方法就是canvas绘制到一张上后进行下载。html2canvas的技巧在这里不在讲解。 二维码和背景图片进行定位。 在传统场合,这类功能往往依赖后台合成图片,或依赖端上实现,但web侧本身也有独立的解决方案。 Web中具有图片生成功能的是canvas标签,我们可以使用canvas中的toDataUrl() API,得到当前画布内

地推利器Xinstall:全方位二维码统计,打造高效地推策略,轻松掌握市场脉搏!

在移动互联网时代,地推作为一种传统的推广方式,依然占据着重要的地位。然而,随着市场竞争的加剧,地推也面临着诸多挑战,如如何有效监测下载来源、解决填码和人工登记的繁琐、避免重复打包和iOS限制、以及如何准确考核推广业绩等。针对这些痛点,Xinstall作为一款强大的移动应用统计与推广平台,推出了全面的地推二维码统计功能,助力地推人员轻松应对各种挑战。 一、一键生成统计二维码,告别繁琐填码 地推

纯js开发在线截图生成器工具,思路和方法在这里

不谈使用转账付款交易截图的用途是什么,我这里只谈怎么通过代码来实现这个功能的思路,以及用到的技术。 最近有个客户找到探奇客需要定制一个截图生成的工具。开发后的效果是这样的 开发这个转账付款交易截图生成器用到了这些组件,这里就直接截图源码,懂技术的都可以看懂。   下面再说说实现的思路 使用 fabric.min.js预设对应的文字和图片占位并调整好x和y坐标。然后再通过右侧的输入

使用Qrcode第三方组件生成二维码

/*** 使用QRCODE 生成二维码图片*/package com.qrcode;import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOExceptio

在线二维码解码器:将二维码转换成网址链接

在当今数字化时代,二维码(QR码)已成为一种便捷的信息传递工具。它不仅可以存储大量数据,还能快速分享信息。然而,有时我们需要将二维码中的内容转换为网址链接,以便在浏览器中直接访问。小编将详细介绍如何使用在线二维码解码器实现这一功能。 一、什么是二维码? 二维码是一种由黑白相间的图案组成的矩形图像,通过扫描设备(如智能手机)可以快速读取其中存储的数据。这些数据可以是网址、文本、联系信息等。