Java 解析二维码,google.ZXing 讲解
Zxing 库的主要部分支持以下几个功能:核心代码的使用、适用于J2SE客户端的版本、适用于 Android 客户端的版本(即BarcodeScanner
)、 Android 的集成(通过Intent支持和BarcodeScanner
的集成)。
本站 Demo : https://www.sojson.com/deqr.html
Jar包请在附件下载。
下面直接上代码。
代码一:
package com.sojson.code.manager;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.sojson.common.utils.StringUtils;
/**
*
* 开发公司:itboy.net<br/>
* 版权:itboy.net<br/>
* <p>
*
* 编码解码 Manager
*
* <p>
*
* 区分 责任人 日期 说明<br/>
* 创建 周柏成 2015年11月7日 <br/>
* <p>
* *******
* <p>
* @author zhou-baicheng
* @email i@itboy.net
* @version 1.0,2015年11月7日 <br/>
*
*/
public class CodeManager {
/**
* 通过Url地址或者图片解码
*
* @param request
* @param url
* @return
*/
public static Map<String, Object> decode(
MultipartHttpServletRequest request, String url) {
Map<String, Object> resultMap = new HashMap<String, Object>();
InputStream inputStream = null;
if (StringUtils.isNotBlank(url)) {
try {
URL exurl = new URL(url);
HttpURLConnection httpConn = (HttpURLConnection) exurl
.openConnection();
httpConn.connect();
inputStream = httpConn.getInputStream();
} catch (Exception e) {
resultMap.put("status", 500);
resultMap.put("message", "解码失败,Url地址有误没有获取到文件");
return resultMap;
}
} else {
Map<String, MultipartFile> fileMap = request.getFileMap();
try {
for (String fileName : fileMap.keySet()) {
MultipartFile mutFile = fileMap.get(fileName);
inputStream = mutFile.getInputStream();
}
} catch (Exception e) {
resultMap.put("status", 500);
resultMap.put("message", "解码失败:" + e.getMessage());
}
}
try {
String code = MatrixUtil.decode(inputStream);
resultMap.put("text", code);
resultMap.put("status", 200);
} catch (Exception e) {
resultMap.put("status", 500);
resultMap.put("message", "解码失败");
}
return resultMap;
}
}
代码二:
package com.sojson.code.manager;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
/**
* 使用ZXing2.3,生成条码的辅助类。可以编码、解码。编码使用code包,解码需要javase包。
*
*/
public final class MatrixUtil {
private static final String CHARSET = "utf-8";
/**
* 禁止生成实例,生成实例也没有意义。
*/
private MatrixUtil() {
}
/**
* 解码,需要javase包。
* 文件方式解码
* @param file
* @return
*/
public static String decode(File file) {
BufferedImage image;
try {
if (file == null || file.exists() == false) {
throw new Exception(" File not found:" + file.getPath());
}
image = ImageIO.read(file);
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Result result;
// 解码设置编码方式为:utf-8,
Hashtable<DecodeHintType,String> hints = new Hashtable<DecodeHintType,String>();
hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
result = new MultiFormatReader().decode(bitmap, hints);
return result.getText();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 流方式解码
* @param input
* @return
*/
public static String decode(InputStream input) {
BufferedImage image;
try {
if (input == null ) {
throw new Exception(" input is null");
}
image = ImageIO.read(input);
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Result result;
// 解码设置编码方式为:utf-8,
Hashtable<DecodeHintType,String> hints = new Hashtable<DecodeHintType,String>();
hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
result = new MultiFormatReader().decode(bitmap, hints);
return result.getText();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Java Jar包下载请看附件。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/92.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。