您的位置:首页 > 编程语言 > Java开发

java代码实现二维码图片的生成和解析

2017-04-23 11:39 881 查看
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流的相关知识,大家也可以直接把它写成一个封装类,直接调用。当然咨询研究一下,非常有助于提升自己的开发能力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: