java实现二维码的生成和解析
时间:2020-10-21
本文章向大家介绍java实现二维码的生成和解析,主要包括java实现二维码的生成和解析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
二维码现在已经在我们的生活中大量使用,如手机支付,扫一扫登录,扫一扫加好友等。
生成二维码
添加maven依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
使用工具生成二维码
public class Client {
public static void main(String[] args) throws Exception {
String content = "中国";
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.MARGIN, 0);
int onColor = 0xFF000000; //前景色
int offColor = 0xBFB0A8; //背景色
MatrixToImageConfig config = new MatrixToImageConfig(onColor, offColor);
BitMatrix bitMatrix = new MultiFormatWriter()
.encode(content, BarcodeFormat.QR_CODE, 300, 300, hints);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "png", baos, config);
System.out.println(Base64.getEncoder().encodeToString(baos.toByteArray()));
}
}
生成的二维码如下
zxing包提供了多种码的创建,二维码,条形码等。
解析二维码
public class Client {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("D:/a.png");
BufferedImage image = ImageIO.read(is);
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bb = new BinaryBitmap(new HybridBinarizer(source));
HashMap<DecodeHintType, String> hints = new HashMap<>();
hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
Result result = new MultiFormatReader().decode(bb, hints);
System.out.println("二维码格式类型:" + result.getBarcodeFormat());
System.out.println("二维码文本内容:" + result.getText());
}
}
解析出的文本为:中国,为生成二维码时填入的内容。
生成条形码
public class Client {
public static void main(String[] args) throws Exception {
String content = "123456789";
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.MARGIN, 0);
int onColor = 0xFF000000; //前景色
int offColor = 0xBFB0A8; //背景色
MatrixToImageConfig config = new MatrixToImageConfig(onColor, offColor);
BitMatrix bitMatrix = new MultiFormatWriter()
.encode(content, BarcodeFormat.CODE_128, 300, 100, hints);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "png", baos, config);
System.out.println(Base64.getEncoder().encodeToString(baos.toByteArray()));
}
}
BarcodeFormat.CODE_128 表示条形码
生成的条形码如下
解析条形码
public class Client {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("D:/b.png");
BufferedImage image = ImageIO.read(is);
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bb = new BinaryBitmap(new HybridBinarizer(source));
HashMap<DecodeHintType, String> hints = new HashMap<>();
hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
Result result = new MultiFormatReader().decode(bb, hints);
System.out.println("二维码格式类型:" + result.getBarcodeFormat());
System.out.println("二维码文本内容:" + result.getText());
}
}
解析出的内容为:123456789
原文地址:https://www.cnblogs.com/strongmore/p/13855155.html
- Linux下FastDFS分布式存储-总结及部署记录
- Linux下IP SAN共享存储操作记录
- 在服务端发起一个Post请求
- jsencrypt参数前端加密c#解密
- 集合中随机取不重复的索引
- SpringBoot(四)SpringBoot中lombok使用
- SpringBoot(四)之thymeleaf的使用
- SpringBoot(三)整合Redis
- 除了小蜗牛,我蛙还带来了YUNUCMSv1.0.6
- SpringBoot(二)Web整合开发
- SpringBoot(一)走进Springboot的世界
- RxJava2学习笔记(2)
- RxJava2学习笔记(1)
- Matplotlib新手上路(下)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Redis使用与操作k-v数据
- Spring集成Hadoop和Hbase
- JVM系列之:JIT中的Virtual Call接口
- 重新构建711的Android项目(二),架构的选择与实现
- Android的配置文件操作封装,摒弃SharedPreference操作配置漫天乱飞
- java实现PBOC的TLV格式解析,超简单的解析(全互联网最简单)
- 链表总计
- Spring整合MongoDb
- 正确使用Qt多线程
- Spring与hibernate与mybatis
- scala 模式匹配的几个模式
- Spring Security 认证
- Spring Security 简单配置用户存储
- 我的小工具-nodejs串口转TCP调试通信
- Spring Web Folw配置