网站首页 > java教程 正文
2015年什么最火,二维码,2016年随处可见的是什么,二维码。二维码的历史我们就不探究了,今天分享的是利用Java代码实现二维码的生成和解析。Java代码生成和解析二维码涉及到的东西比较多,还需要引入两个jar包,适合有一定Java功底的人来实现。ok,废话不多说,现在开始分享二维码的生成和解析的经验。
1、下载二维码支持jar包,qrcode.jar和qrcode_swetake.jar,大家可以在网上搜索,也可以点击连接下载我已经使用过的jar包,地址如下:http://download.csdn.net/detail/bakehe/9548373
2、编写生成二维码的Java代码,main方法如下:
3、对应的生成二维码的方法encode(),代码如下:
private static boolean encode(String srcValue, String qrcodePicfilePath){
int MAX_DATA_LENGTH = 200;
byte[] d = srcValue.getBytes();
int dataLength = d.length;
int imageWidth = 113;
int imageHeight = imageWidth;
BufferedImage bi = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setBackground(Color.WHITE);
g.clearRect(0, 0, imageWidth, imageHeight);
g.setColor(Color.BLACK);
if (dataLength > 0 && dataLength <= MAX_DATA_LENGTH) {
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(5);
boolean[][] b = qrcode.calQrcode(d);
int qrcodeDataLen = b.length;
for (int i = 0; i < qrcodeDataLen; i++) {
for (int j = 0; j < qrcodeDataLen; j++) {
if (b[j][i]) {
g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
}
}
}
System.out.println("二维码成功生成!!");
} else {
System.out.println( dataLength +"大于"+ MAX_DATA_LENGTH);
return false;
}
g.dispose();
bi.flush();
File f = new File(qrcodePicfilePath);
String suffix = f.getName().substring(f.getName().indexOf(".")+1, f.getName().length());
System.out.println("二维码输出成功!!");
try {
ImageIO.write(bi, suffix, f);
} catch (IOException ioe) {
System.out.println("二维码生成失败" + ioe.getMessage());
return false;
}
return true;
}
4、解析二维码的main(),代码如下:
5、解析二维码的decode()方法,这里我是利用微信的个人公众账号生成的图片,欢迎大家扫描,代码如下:
private static String decode(String qrcodePicfilePath) {
System.out.println("开始解析二维码!!");
/* 读取二维码图像数据 */
File imageFile = new File(qrcodePicfilePath);
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
System.out.println("读取二维码图片失败: " + e.getMessage());
return null;
}
/* 解二维码 */
QRCodeDecoder decoder = new QRCodeDecoder();
String decodedData = new String(decoder.decode(new J2SEImageGucas(image)));
System.out.println("解析内容如下:"+decodedData);
return decodedData;
}
总结:二维码的生成和解析其实很简单,但是里面用到的图片的生成和图片的读取,这是Java IO流的相关知识,大家也可以直接把它写成一个封装类,直接调用。当然咨询研究一下,非常有助于提升自己的开发能力。好了,欢迎大家继续关注我的分享,感兴趣的可以关注我的微信公众号:thiscode,学习更多开发方面的知识!
猜你喜欢
- 2024-09-27 运维干货来啦:Jenkins+gradlew自动构建android项目提供下载链接和二维码下载
- 2024-09-27 基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录
- 2024-09-27 基于token的多平台身份认证架构设计
- 2024-09-27 在线二维码生成器有哪些?微信二维码转换成链接如何实现?
- 2024-09-27 扫二维码提货系统自己建,系统搭建与操作指南分享
- 2024-09-27 PDF文件添加二维码水印(pdf二维码怎么弄出来扫码)
- 2024-09-27 掏出手机,扫一扫,即刻登录——SpringBoot实现二维码扫码登录
- 2024-09-27 短连接生成器有哪些?制作二维码生成器有哪些?
- 2024-09-27 慕课网Java相关课程学习项目源码,以及源码地址
- 2024-09-27 二维码扫描优化(微信二维码优化)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)