记快乐符号:
利用google.zxing 获取二维码图片内容
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
/**
* @description: TestQrcode <br>
* @since: 2021/10/11 5:01 下午 <br>
* @author: 释槐~ <br>
* @version: <br>
*/
public class TestQrcode {
public static void main(String[] args) {
System.out.println(decode(new File("/WechatIMG63.jpeg")));;
}
/**
* 解析图片文件上的二维码
*
* @param imageFile 图片文件
* @return 解析的结果,null表示解析失败
*/
public static String decode(File imageFile) {
try {
BufferedImage image = ImageIO.read(imageFile);
LuminanceSource luminanceSource = new BufferedImageLuminanceSource(image);
Binarizer binarizer = new HybridBinarizer(luminanceSource);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Map<DecodeHintType, Object> hints = new HashMap<>();
hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
hints.put(DecodeHintType.POSSIBLE_FORMATS, BarcodeFormat.QR_CODE);
Result result = new QRCodeReader().decode(binaryBitmap, hints);
System.out.println(result.toString());
return result.getText();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
pom 引入
<!-- 二维码支持包 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.0</version>
</dependency>