在指定的背景图上按指定位置放置文字和图片
在指定的背景图上按指定位置放置文字和图片
从网上查询资料----->得到的结果
-
Springboot 图片添加文字水印
-
项目要求给每个考生制作证书。这里我们有每个公司需要的背景图片模板,而我现在要做的就是把每个考生的考试信息和个人信息,以水印的形式添加到图片的指定位置。(现在这个灵活性不高)下面就直接上代码。
-
首先我这边先写了一个工具类waterMarkUtils 。在这个工具类里面主要设置每个水印的位置以及字体还有存放位置。(我这边因为要上传到服务器,所以就稍微处理了一下,还有我这个可以添加多个水印,图片的来源是网络路径)代码如下:
-
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
public class WaterMarkUtils {
/**
* @param srcImgPath 源图片路径
* @param tarImgPath 保存的图片路径
* @param waterMarkContent 水印内容
* @param markContentColor 水印颜色
* @param font 水印字体
* @param workerNames
*/
public static Object addWaterMark(
String srcImgPath,
String tarImgPath,
String waterMarkContent,
String workerNames,
String workerCardNums,
String allStaffOrgNames,
BigDecimal studentScores,
String certNums,
String trainCredentialNames,
String templateContents,
Color markContentColor,
Font font) {
try {
//new一个url对象
URL url = new URL(srcImgPath);
//打开链接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式
/*conn.setRequestMethod("GET");*/
//超时相应时间为5秒
conn.setConnectTimeout(5*1000);
//通过输入流获取图片数据
InputStream inputStream = null;
try {
inputStream = conn.getInputStream();
}catch (Exception e){
e.printStackTrace();
}
//文件转化为图片
Image srcImg = null;
try {
srcImg = ImageIO.read(inputStream);
}catch (Exception e){
e.printStackTrace();
}
//获取图片的宽
int srcImgWidth = srcImg.getWidth(null);
//获取图片的高
int srcImgHeight = srcImg.getHeight(null);
// 加水印
BufferedImage bufImg = new BufferedImage(srcImgWidth,
srcImgHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bufImg.createGraphics();
g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
//根据图片的背景设置水印颜色
g.setColor(markContentColor);
//设置字体
g.setFont(font);
//设置时间水印的坐标
int x = (int) (
srcImgWidth -
-