本项目迁移自ALI1416/QRCodeEncoder.Net,只编写了生成器部分,并对处理逻辑进行了大量优化,构建后qrcode-encoder.jar
文件仅20kb
注意:本项目不提供二维码绘制方法,如需绘制请看使用示例
.Net
: ALI1416/QRCodeEncoder.NetJavaScript
: ALI1416/qrcode-encoder-js
<dependency>
<groupId>cn.404z</groupId>
<artifactId>qrcode-encoder</artifactId>
<version>1.2.0</version>
</dependency>
参数名 | 中文名 | 类型 | 默认值 |
---|---|---|---|
content | 内容 | String | (无) |
level | 纠错等级 | Integer | 0 |
mode | 编码模式 | Integer | (自动探测) |
versionNumber | 版本号 | Integer | (最小版本) |
参数名 | 中文名 | 类型 | 默认值 |
---|---|---|---|
length | 内容字节数 | int | (无) |
level | 纠错等级 | int | (无) |
mode | 编码模式 | int | (无) |
versionNumber | 版本号 | Integer | (最小版本) |
参数名 | 中文名 | 类型 |
---|---|---|
data | 数据 | boolean[] |
version | 版本 | Version |
level | 纠错等级 | int |
值 | 等级 | 纠错率 |
---|---|---|
0 | L | 7% |
1 | M | 15% |
2 | Q | 25% |
3 | H | 30% |
值 | 模式 | 备注 |
---|---|---|
0 | NUMERIC | 数字0-9 |
1 | ALPHANUMERIC | 数字0-9、大写字母A-Z、符号(空格)$%*+-./: |
2 | BYTE(ISO-8859-1) | 兼容ASCII |
3 | BYTE(UTF-8) |
取值范围:[1,40]
QRCodeTest.java
String content = "1234😀";
int level = 0;
int mode = 3;
int versionNumber = 1;
String path = "E:/1.png";
QRCode qrCode = new QRCode(content, level, mode, versionNumber);
BufferedImage image = ImageUtils.qrMatrix2Image(qrCode.Matrix, 10);
ImageUtils.saveImage(image, path);
ImageUtils.java
public static BufferedImage qrMatrix2Image(boolean[][] bytes, int pixelSize) {
int length = bytes.length;
int size = (length + 2) * pixelSize;
BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = image.createGraphics();
graphics.setColor(Color.BLACK);
for (int x = 0; x < length; x++) {
for (int y = 0; y < length; y++) {
if (bytes[x][y]) {
graphics.fillRect((x + 1) * pixelSize, (y + 1) * pixelSize, pixelSize, pixelSize);
}
}
}
graphics.dispose();
return image;
}
public static void saveImage(BufferedImage image, String path) throws IOException {
ImageIO.write(image, "png", new File(path));
}
更多请见测试