摘要说明:
ImageMergedUtil主要合成图片并添加文字,比如经常遇到的背景二维码生成海报
Maven依赖:
无
效果:
+ =
java工具类:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageMergedUtil {
/**
* 合成图片并添加文字
*
* @param tempImage
* 模版图片
* @param mergedImage
* 叠加图片
* @param left
* 叠加图片左边距
* @param top
* 叠加图片上边距
* @param width
* 叠加图片宽带
* @param height
* 叠加图片高度
* @param str
* 文字
* @param font
* 文字字体
* @param fontLeft
* 文字左边距
* @param fonTop
* 文字上边距
* @param outputfile
* 最终合成文件
* @throws IOException
*/
public static void merged(File tempImage, File mergedImage, int left,
int top, int width, int height, String str, Font font,
int fontLeft, int fonTop, File outputfile) throws IOException {
// 加载模版图片
BufferedImage imageLocal = ImageIO.read(tempImage);
// 加载叠加图片
BufferedImage imageCode = ImageIO.read(mergedImage);
Graphics2D g = imageLocal.createGraphics();
// 在模板上添加叠加图片(地址,左边距,上边距,图片宽度,图片高度,未知)
g.drawImage(imageCode, left, top, width, height, null);
// 添加文本说明
if (str != null) {
// 设置文本样式
g.setFont(font);
g.setColor(Color.RED);
g.drawString(str, fontLeft, fonTop);
}
// 完成模板修改
g.dispose();
ImageIO.write(imageLocal, "png", outputfile);
}
public static void main(String[] args) {
File tempImage = new File("d://temp.png");
File mergedImage = new File("d://qrcode.png");
File outputfile = new File("d://outputfile.png");
Font font = new Font("PingFangSC-Regular", Font.PLAIN, 35);
try {
ImageMergedUtil.merged(tempImage, mergedImage, 220, 761, 300, 300,
"xxx邀请你使用xxx", font, 220, 1187, outputfile);
} catch (IOException e) {
e.printStackTrace();
}
}
}