工具类已经实现Base64二维码图片识别和路径图片识别
所需maven依赖
<!--二维码生成和解析相关的jar包【生成】【解析】-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.1</version>
</dependency>
<!-- /artifact/com.google.zxing/core -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
工具类代码,直接复制修改package可用
package mon.utils.qrcode;import com.google.zxing.*;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.mon.HybridBinarizer;import sun.misc.BASE64Decoder;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;/*** 作用:二维码识别(图片)* 作者:Tiddler* 时间:-08-/8/31 16:23* 类名:QRCodeTools**/public class QRCodeTools {/*** 解析二维码解析,此方法是解析Base64格式二维码图片* baseStr:base64字符串,data:image/png;base64开头的*/public static String deEncodeByBase64(String baseStr) {String content = null;BufferedImage image;BASE64Decoder decoder = new BASE64Decoder();byte[] b=null;try {int i = baseStr.indexOf("data:image/png;base64,");baseStr = baseStr.substring(i+"data:image/png;base64,".length());//去掉base64图片的data:image/png;base64,部分才能转换为byte[]b = decoder.decodeBuffer(baseStr);//baseStr转byte[]ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(b);//byte[] 转BufferedImageimage = ImageIO.read(byteArrayInputStream);LuminanceSource source = new BufferedImageLuminanceSource(image);Binarizer binarizer = new HybridBinarizer(source);BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");Result result = new MultiFormatReader().decode(binaryBitmap, hints);//解码System.out.println("图片中内容: ");System.out.println("content: " + result.getText());content = result.getText();} catch (IOException e) {e.printStackTrace();} catch (NotFoundException e) {e.printStackTrace();}return content;}/*** 解析二维码,此方法解析一个路径的二维码图片* path:图片路径*/public static String deEncodeByPath(String path) {String content = null;BufferedImage image;try {image = ImageIO.read(new File(path));LuminanceSource source = new BufferedImageLuminanceSource(image);Binarizer binarizer = new HybridBinarizer(source);BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");Result result = new MultiFormatReader().decode(binaryBitmap, hints);//解码System.out.println("图片中内容: ");System.out.println("content: " + result.getText());content = result.getText();} catch (IOException e) {e.printStackTrace();} catch (NotFoundException e) {e.printStackTrace();}return content;}}