Java生成与解析二维码
1、下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar,
其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免积分):http://download.csdn.net/detail/bakehe/9548373
2、创建J2SEImageGucas实现类,用于实现二维码图像接口QRCodeImage
package org.sasc.core.twobarcode;
import java.awt.image.BufferedImage;
import jp.sourceforge.qrcode.data.QRCodeImage;
public class J2SEImageGucas implements QRCodeImage {
BufferedImage image;
public J2SEImageGucas(BufferedImage image) {
this.image = image;
}
public int getWidth() {
return image.getWidth();
}
public int getHeight() {
return image.getHeight();
}
public int getPixel(int x, int y) {
return image.getRGB(x, y);
}
}
3、编写生成二维码的方法encode和解析二维码的方法decode
package org.sasc.core.twobarcode; import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; import javax.imageio.ImageIO; import org.apache.log4j.Logger; import com.swetake.util.Qrcode; import jp.sourceforge.qrcode.QRCodeDecoder; public class CreateQRCode {
private static final Logger log = Logger.getLogger(CreateQRCode.class); /**
* 生成二维码
*
* @param srcValue 二维码内容
* @param qrcodePicfilePath 生成路径及二维码图片名称
* @return
* @author muxiaoyou
*/
private static boolean encode(String srcValue, String qrcodePicfilePath) {
int MAX_DATA_LENGTH = 200;
byte[] d = srcValue.getBytes();
int dataLength = d.length;
int imageWidth = 139;//宽度为139像素
int imageHeight = imageWidth;//长度也为139像素,即此二维码为139*139像素
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) {
//QR码的最大容量取决于选择的版本、纠错级别和编码模式(Mode:数字、字符、多字节字符等)
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');//设置容错率为M
qrcode.setQrcodeEncodeMode('B');//设置二维码加密模式为B
qrcode.setQrcodeVersion(7);//设置二维码模式为7,取值范围为1到40,值越大所能包含的字符信息量越大
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);
}
}
}
log.info("二维码生成完成!!");
} else {
log.info(dataLength + "大于" + MAX_DATA_LENGTH);
return false;
}
g.dispose();
bi.flush(); File f = new File(qrcodePicfilePath);
if(!f.exists()){
f.mkdirs();
}
String suffix = f.getName().substring(f.getName().indexOf(".") + 1, f.getName().length());
try {
ImageIO.write(bi, suffix, f);
log.info("二维码输出成功!!");
} catch (IOException ioe) {
log.info("二维码生成失败" + ioe.getMessage());
return false;
}
return true;
} /**
* 解析二维码
* @param qrcodePicfilePath 二维码图片路径
* @return
* @author muxiaoyou
*/
private static String decode(String qrcodePicfilePath) {
log.info("开始解析二维码!!");
/* 读取二维码图像数据 */
File imageFile = new File(qrcodePicfilePath);
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
log.info("读取二维码图片失败: " + e.getMessage());
return null;
}
/* 解析二维码 */
QRCodeDecoder decoder = new QRCodeDecoder();
String decodedData = new String(decoder.decode(new J2SEImageGucas(image)));
log.info("解析内容如下:" + decodedData);
return decodedData;
} /**
* 程序入口
*/
public static void main(String[] args) {
String data = "文档编号:Document-967-9301;文档名称:普通文档";
/**
* 生成二维码
*/
CreateQRCode.encode(data, "D:/twoBarCodeImagessss/文档Document.JPG");
/**
* 解析二维码
*/
CreateQRCode.decode("D:/twoBarCodeImagessss/文档Document.JPG");
} }
Java生成与解析二维码的更多相关文章
- Java生成、解析二维码
今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...
- java生成和解析二维码
前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是 ...
- 使用Google提供的ZXing Core,Java生成、解析二维码
1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core ...
- java 生成和解析二维码
public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...
- JAVA中生成、解析二维码图片的方法
JAVA中生成.解析二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能,并有解析二维码的方法. 一.下载zxing的架包,并导 ...
- Java使用QRCode.jar生成与解析二维码
原文V:http://www.cnblogs.com/bigroc/p/7496995.html#3797682 正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督 ...
- ZXing 生成、解析二维码图片的小示例
概述 ZXing 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME ...
- Java使用Zxing生成、解析二维码工具类
Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...
- C# 生成和解析二维码
下面是C#和JAVA两个版本的开放源码下载: C#:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library JAVA: ...
随机推荐
- 一个文件夹可以link 到另外一个文件夹
Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symboli ...
- centos安装与卸载postgresql
1.卸载旧版本postgresql $ yum remove postgresql* 2.更新yum $ yum update 3.下载pgdg-centos92-9.2-6.noarch.rpm,或 ...
- Nginx 开启gzip 压缩
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术. 经过gz ...
- Xshell访问虚拟机内Linux
这段时间在家,需要用到Linux,身边的电脑硬盘很小,装双系统用的频率也不高还浪费磁盘空间,还是使用虚拟机,通过Xshell管理虚拟机内Ubuntu还是比较方便的.很早之前学习hadoop的时候就是用 ...
- C++模板元编程(C++ template metaprogramming)
实验平台:Win7,VS2013 Community,GCC 4.8.3(在线版) 所谓元编程就是编写直接生成或操纵程序的程序,C++ 模板给 C++ 语言提供了元编程的能力,模板使 C++ 编程变得 ...
- word2vec + transE 知识表示模型
本文主要工作是将文本方法 (word2vec) 和知识库方法 (transE) 相融合作知识表示,即将外部知识库信息(三元组)加入word2vec语言模型,作为正则项指导词向量的学习,将得到的词向量用 ...
- hdu2348题解
又恬不知耻的开始写题解了,暑假到了,QAQ然而想我这样的弱逼是没有暑假的sad,还是老老实实刷题吧. 题目大意:给一个小车的宽度和长度和两条道路的宽度,判断小车能否通过. 思路:可以先看下面的图,我们 ...
- web新内容
利用css完成如图的排版 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- 【转】mysql忘记密码(未初始化)
Mac OS X - 重置 MySQL Root 密码您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码:1. 停止 mysql server. 通常是在 '系 ...
- oracle更新语句merge和update
update: update语句更新需要根据索引或者数据列遍历所有行 语句举例: update table1 a set column1=(select column from table2 b w ...