让一句话生成一张二维码图片
使用了core.3.3.0.jar包,推荐maven
一共三步就可以完成
第一步:创建一个 输出流
第二步:画一个虚拟对象
第三步:二维码对象的信息写入文件
注释很清楚
package Java;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 生成一张二维码图片
*/
public class ORCode {
public static void main(String[] args) throws WriterException, IOException {
// 创建一个 输出流 需要五个信息 内容,类型,宽度,高度,其他信息map
MultiFormatWriter mfw = new MultiFormatWriter();
// 内容
String content = "不能摆烂了";
// 类型(比如常见的日本的QR code 还有比如美国的PDF147 中国的汉信码)
BarcodeFormat type = BarcodeFormat.QR_CODE;
// 二维码宽度
int width = 600;
// 二维码高度
int height = 600;
// 其他信息,比如字符集,留白,纠错等级之类的
Map<EncodeHintType,Object> map = new HashMap<>();
map.put(EncodeHintType.CHARACTER_SET,"utf-8"); // 字符集
map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); // 纠错等级
map.put(EncodeHintType.MARGIN,2); // 留白
// 画一个虚拟对象
BitMatrix matrix = mfw.encode(content,type,width,height,map);
// 二维码对象的信息写入文件
int black = Color.BLACK.getRGB(); // 颜色,黑
int white = Color.WHITE.getRGB(); // 颜色,白
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
image.setRGB(i,j,matrix.get(i,j)?black:white); // 三目表达式
}
}
File file = new File("D://Java_test//test.jpg");
ImageIO.write(image,"jpg",file);
System.out.println("生成成功");
}
}