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

java 使用zxing生成二维码

2018-01-15 16:59 696 查看
1.先引用要使用的两个jar包

<!--二维码生成-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.0</version>
</dependency>

2.代码直接以流的形式在web页面展示

public void show(@RequestParam("code") String code,
HttpServletRequest request, HttpServletResponse response){
QRCodeWriter writer = new QRCodeWriter();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
BitMatrix bitMatrix = null;
try {

/**
* 1.改变编码格式,不改变源码的情况下:new String(code.getBytes("UTF-8"),"ISO-8859-1");
* 2.改变源码:com.google.zxing.core.qrcode.encoder.Encoder.java static final String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";改为"utf-8"
* */
code=new String(code.getBytes("UTF-8"),"ISO-8859-1");

bitMatrix = writer.encode(code, BarcodeFormat.QR_CODE, 300, 300);
MatrixToImageWriter.writeToStream(bitMatrix, "jpeg", response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();

} catch (WriterException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}3.二维码解析
public void analysis(File file) {

try {
BufferedImage image;
try {
image = ImageIO.read(file);
if (image == null) {
System.out.println("Could not decode image");
}
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Result result;
@SuppressWarnings("rawtypes")
Hashtable hints = new Hashtable();
//解码设置编码方式为:utf-8
hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
result = new MultiFormatReader().decode(bitmap, hints);
String resultStr = result.getText();
System.out.println("解析后内容:" + resultStr);
} catch (IOException ioe) {
System.out.println(ioe.toString());
} catch (ReaderException re) {
System.out.println(re.toString());
}
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java开发