代碼如下:
1.maven所需jar
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.0.0</version> </dependency>
2.產生二維碼:
package com;import java.io.File;import java.io.IOException;import java.nio.file.Path;import java.util.Hashtable;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public static void main(String[] args) throws IOException { String text="www.baidu.com"; int width=100; int height=100; String format="png"; Hashtable hints=new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); hints.put(EncodeHintType.MARGIN, 2); try { BitMatrix bitMatrix=new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height,hints); Path file=new Java.io.File("D:/new.png").toPath();//在D盤產生二維碼圖片 MatrixToImageWriter.writeToPath(bitMatrix, format, file); } catch (WriterException e) { // TODO Auto-generated catch block e.printStackTrace();}
3.解析二維碼:
package com;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatReader;import com.google.zxing.NotFoundException;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.HybridBinarizer;public static void main(String[] args) throws NotFoundException { MultiFormatReader formatReader=new MultiFormatReader(); File file =new File("D:/new.png"); BufferedImage image=null; try { image = ImageIO.read(file); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } BinaryBitmap binaryBitmap =new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image))); Hashtable hints=new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); Result result=formatReader.decode(binaryBitmap,hints); System.err.println("解析結果:"+result.toString()); System.out.println(result.getBarcodeFormat()); System.out.println(result.getText());}