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流的相关知识,大家也可以直接把它写成一个封装类,直接调用。当然咨询研究一下,非常有助于提升自己的开发能力。
java代码实现二维码图片的生成和解析相关推荐
- 怎么用python生成带二维码的照片_怎么制作二维码图片-Python 生成个性二维码
一.实验介绍1.1 实验内容 本课程通过调用MyQR接口来实现生成个人所需二维码,并可以设置二维码的大小.是否在现有图片的基础上生成.是否生成动态二维码. 1.2 知识点 Python3基础 MyQR ...
- ZXing 二维码库之生成与解析二维码
博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/ ...
- 使用Java代码制作二维码(超级简单)
操作步骤 真的是灰常简单,导入三个jar包,十几行代码就搞定了. 源代码和jar包已经打包放在阿里云盘里面,文末有链接. import com.google.zxing.BarcodeFormat; ...
- 使用开源代码实现二维码扫描和生成
Github下载开源代码https://github.com/搜搜索zxing 把BarCodeTest导到ADT中,然后建立自己的工程TestQRcode,并关联BarCodeTest.在TestQ ...
- 六一儿童节艺术海报二维码图片在线生成
马上就要到六一儿童节了,与六一儿童有关的图片海报该怎么去制作呢?对于不懂的Photoshop的小白来说,要制作生成一张漂亮的六一儿童节相关的艺术海报就很麻烦,如果有在线的艺术海报生成平台那就可以了.我 ...
- Java和C#环境中制作二维码图片
二维码作为一种先进的应用,随着移动互联网和智能终端的普及而快速发展,在媒体.产品质量.仓储物流登各行各业都应用广泛.二维码具有存储量大.保密性高.追踪性高.抗损性强.被援性大.成本便宜等特性,这些特性 ...
- Java - 生成二维码图片
文章目录 生成二维码图片 参考 生成二维码图片 新建 Maven Project,引入依赖: <dependency><groupId>com.google.zxing< ...
- windows C++生成二维码图片
windows C++生成二维码图片 二维码功能现在很常用,前端时间阶段一个项目需求,需要在我们的windows软件上集成扫码登录功能,二维码由windows端生成,实现原理是在windows上用du ...
- Android 解析二维码图片
1.项目需求:知道项目需求,才知道先从哪里入手,见图一.(点击相册,打开图库) 2.代码: 1.打开图库代码: mBtnOpenPicture.setOnClickListener(new View. ...
最新文章
- 星云测试-给你的Android应用做个深度体检
- 怎么在python下载网站内容-分析某网站,并利用python自动登陆该网站,下载网站内容...
- 社区网站功能实现系列(三):社区页面无刷新回发的一种实现方式
- matplotlib嵌入到pyqt中
- 开源 , KoobooJson一款高性能且轻量的JSON框架
- java联接pg库_成为Java流大师–第5部分:将联接的数据库表转换为流
- 初识JavaScript,感觉整个人都不好了。。。
- 华为荣耀20和x10比较_荣耀X10和华为畅享20plus,到底哪个更值得入手?
- STM8单片机读取DHT11温湿度传感器
- 关于MVC打印问题,打印指定的内容
- 亚马逊条码打印_使用亚马逊的条形码扫描仪轻松从手机上购买任何东西
- httpclient基本get用法
- JOI2014Final 飞天鼠
- Slowloris DoS攻击的原理与简单实现
- 2021第一学期学习笔记01
- 计算机中什么不可打印,电脑不能打印怎么办
- Parameter 'cId' not found. Available parameters are [id, param1]
- 【Verilog 设计】Verilog 实现偶数、奇数分频和任意小数分频
- reshape2揉数据
- ERROR 1044
热门文章
- 1对1直播源码,登录注册密码隐藏显示
- mysql-58同城30条军规
- 研发团队开晨会真的是浪费时间吗?
- codecombat 关卡目录
- ncurses 方向键响应
- 冒险落幕 《魔兽世界》全国巡回展终点站——福州
- 学计算机的电脑用i5还是i7好,家用电脑,选酷睿i7还是选i5,这些常识让你不纠结...
- Centos 7.5安装safe-rm,防止rm -rf /命令误删除文件
- 获取 Android 模拟器的 MAC
- php邮箱有效性验证,PHP验证邮箱有效性验证邮箱后缀域名是否真实存在的方法(过滤+DNS验证)...