QR码生成器库
简介
本项目旨在成为多种语言中最优秀、最清晰的QR码生成器库。主要目标是提供灵活的选项和绝对的准确性。次要目标是实现代码紧凑和良好的文档注释。
项目主页提供JavaScript实时演示、详细描述和与竞品的比较:https://www.nayuki.io/page/qr-code-generator-library
特性
核心功能:
- 提供6种编程语言版本,功能几乎相同:Java、TypeScript/JavaScript、Python、Rust、C++、C
- 与竞争库相比,代码更精简但文档注释更丰富
- 支持编码所有40个版本(尺寸)和4个纠错等级,符合QR码Model 2标准
- 输出格式:QR码符号的原始模块/像素
- 比其他实现更准确地检测类似查找器的惩罚模式
- 数字和特殊字母数字文本的编码空间比一般文本更少
- 开源代码使用宽松的MIT许可证
手动参数:
- 用户可以指定允许的最小和最大版本号,库会自动选择范围内适合数据的最小版本
- 用户可以手动指定掩码模式,否则库会自动评估所有8种掩码并选择最佳的
- 用户可以指定绝对纠错等级,或允许库在不增加版本号的情况下提升纠错等级
- 用户可以手动创建数据段列表并添加ECI段
可选高级功能(仅限Java):
- 以汉字模式编码日语Unicode文本,与UTF-8字节相比可节省大量空间
- 为混合数字/字母数字/一般/汉字部分的文本计算最佳分段模式切换
有关QR码技术和本库设计的更多信息可在项目主页上找到。
示例
以下代码为Java版本,但其他语言版本的API命名和行为基本相同。
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;
import javax.imageio.ImageIO;
import io.nayuki.qrcodegen.*;
// 简单操作
QrCode qr0 = QrCode.encodeText("Hello, world!", QrCode.Ecc.MEDIUM);
BufferedImage img = toImage(qr0, 4, 10); // 参见QrCodeGeneratorDemo
ImageIO.write(img, "png", new File("qr-code.png"));
// 手动操作
List<QrSegment> segs = QrSegment.makeSegments("3141592653589793238462643383");
QrCode qr1 = QrCode.encodeSegments(segs, QrCode.Ecc.HIGH, 5, 5, 2, false);
for (int y = 0; y < qr1.size; y++) {
for (int x = 0; x < qr1.size; x++) {
(... 绘制qr1.getModule(x, y) ...)
}
}
许可证
版权所有 © 2024 Project Nayuki。(MIT许可证) https://www.nayuki.io/page/qr-code-generator-library
特此免费授予任何获得本软件及相关文档文件("软件")副本的人无限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及允许向其提供软件的人这样做,但须符合以下条件:
-
上述版权声明和本许可声明应包含在软件的所有副本或大部分内容中。
-
本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为还是其他方面,均由软件或软件的使用或其他交易引起、由软件引起或与之相关。