如果你希望试一试那么直接复制运行,如果你先更进一步了解就仔细看看代码,花上5-30分钟然后可以重新应该能理解。然后就自己结合自己需求改改吧。
POM.xml
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
JAVA
import javax.imageio.ImageIO;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
@SpringBootTest
public class ZXingTest {
@Test
public void encode() throws IOException {
//内容
String text="http://www.baidu.com";
//宽
int width=100;
//高
int height=100;
//图片格式
String format="png";
HashMap hints=new HashMap();
//编码
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 File("D:/new.png").toPath();
MatrixToImageWriter.writeToPath(bitMatrix, format, file);
} catch (WriterException e) {
e.printStackTrace();
}
}
@Test
public void decode() throws NotFoundException {
MultiFormatReader formatReader=new MultiFormatReader();
File file =new File("D:/new.png");
BufferedImage image=null;
try {
image = ImageIO.read(file);
} catch (IOException e) {
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());
}
}