现在二维码越来越流行,秒扫码,秒支付已遍地可见。今天我们就来手动生成自己想要的二维码。
1、新建二维码属性类
private boolean logoFlg = false; // 是否添加Log图片
private String content; // 二维码编码内容
private BarcodeFormat barcodeformat = BarcodeFormat.QR_CODE; //编码类型
private int width = 200; // 生成图片宽度
private int height = 200; // 生成图片高度
private Map<EncodeHintType, ?> hints; // 设置参数
private String logoPath; // Logo图片路径
private String putPath; // 图片输出路径
private LogoConfig LogoConfig; // logo图片参数
2、新建二维码中间logo属性类
public static final Color DEFAULT_BORDERCOLOR = Color.WHITE; // logo默认边框颜色
public static final int DEFAULT_BORDER = 2; // logo默认边框宽度
public static final int DEFAULT_LOGOPART = 5; // logo大小默认为照片的1/5
private final int border = DEFAULT_BORDER; // 默认边框宽度
private final Color borderColor; // 边框颜色
private final int logoPart; // 边框外围宽度
注意:logo属性同样是二位码属性的子集, LogoConfig对应的就是logo属性类。
3、利用google提供的方法生成一张缓存图片‘
MultiFormatWriter .encode(); 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
4、设置二维码中间的logo
利用上一步生成的图片缓存BufferedImage bim,同时利用Graphics2D的绘图方法,把logo放到图片缓存对象中,flush缓存。
4、将缓存图片流数据写入指定图片中
作者:以@沫