java生成二维码例子:
引入工具:
<!-- zxing 二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.2</version>
</dependency>
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
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;
public class MyZxing {
private final static String path = "F:test//code//myzxing.png";
public static void main(String[] args) {
create();
parse();
}
/**
* 生成二维码
*/
public static void create() {
int width = 300; //尺寸
int height = 300;
String format = "png"; //生成的图片格式
String content = "http://www.baidu.com";//二维码内容
//二维码参数
Map 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(content, BarcodeFormat.QR_CODE, width, height,hints);
//生成二维码放在哪里
Path file = new File(path).toPath();
MatrixToImageWriter.writeToPath(bitMatrix, format, file);
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 解析二维码
*/
public static void parse(){
MultiFormatReader formatReader = new MultiFormatReader();
File file = new File(path);
BufferedImage image = null;
try {
image = ImageIO.read(file);
} catch (IOException e) {
e.printStackTrace();
}
BinaryBitmap binaryBitmap =
new BinaryBitmap(
new HybridBinarizer(
new BufferedImageLuminanceSource(image)));
HashMap hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
Result result = null;
try {
result = formatReader.decode(binaryBitmap, hints);
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("内容:"+result);
System.out.println("二维码格式:"+result.getBarcodeFormat());
System.out.println("文本内容:"+result.getText());
}
}