主要是集合hutool工具的使用,简单方便。
/**
* 两个图片合并(加文字)
* @param sourceUrl 底部背景图
* @param config 二维码基础配置
* @param qrContent 二维码内容
* @param qrX 二维码横坐标
* @param qrY 二维码纵坐标
* @param textContent 文字(一般为标题)
* @param textFontSize 文字大小
* @param textFontX 文字的横坐标
* @param textFontY 文字的纵坐标
* @return
*/
@Override
public ByteArrayInputStream getQrCodeUrl(String sourceUrl,
QrConfig config,
String qrContent,
int qrX,
int qrY,
String textContent,
int textFontSize,
int textFontX,
int textFontY) {
//二维码设置
// QrConfig config = QrCodeUtils.getConfig();
//1,生成二维码
BufferedImage qrImage = QrCodeUtil.generate(qrContent, config);
// 2,将图片合成在一起
Image image = ImgUtil.pressImage(
//底图
ImgUtil.read(sourceUrl),
//二维码图(水印图)
qrImage,
// ImgUtil.read(codeFile),
qrX,
//y坐标修正值。 默认在中间,偏移量相对于中间偏移
qrY,
//透明度
1.0f
);
//3,加文字
Image pressTextImage = ImgUtil.pressText(
image,
//title 创牌北805
textContent,
//颜色
Color.WHITE,
//字体 42
new Font("黑体", Font.BOLD, textFontSize),
//x坐标修正值。 默认在中间,偏移量相对于中间偏移
textFontX,
//y坐标修正值。 默认在中间,偏移量相对于中间偏移
textFontY,
//透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
1.0f
);
//转为流
ByteArrayInputStream inputStream = ImgUtil.toStream(pressTextImage, QrCodeUtils.FORMAT_NAME);
return inputStream;
}