package dsfa.jsnd.helper;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author Hunag Zicai
* @date 2022/9/2 16:46
* @desc
**/
public class ImgHelper {
/**
* 字体名称
*/
private static final String FONR_NAME = "微软雅黑";
/**
* 字体大小
*/
private static final int FONT_SIZE = 40;
/**
* 常规字体
*/
private static final int FONT_PLAIN = Font.PLAIN;
/**
* 加粗字体
*/
private static final int FONT_BOLD = Font.BOLD;
/**
* 倾斜字体
*/
private static final int FONT_ITALIC = Font.ITALIC;
/**
* 给照片添加水印
*
* @param imagePath 待添加水印的地址
* @param toPath 要存储的路径
* @param imgName 添加水印后的图片名称
* @param content 水印内容
* @throws IOException
*/
public static void fillWatermark(String imagePath,String toPath,String imgName,String content) throws IOException {
File f = new File(imagePath);
if (!f.exists()) {
throw new RuntimeException("图片不存在");
}
Image img = ImageIO.read(f);
int width = img.getWidth(null);
int height = img.getHeight(null);
BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//创建画笔
Graphics2D g = bufImg.createGraphics();
//srcImg 为上面获取到的原始图片的图片对象
g.drawImage(img, 0, 0, width, height, null);
//根据图片的背景设置水印颜色
g.setColor(new Color(255, 255, 255, 128));
//设置字体 画笔字体样式为微软雅黑,加粗,文字大小为60pt
g.setFont(new Font(FONR_NAME, FONT_ITALIC, FONT_SIZE));
//设置水印的坐标
int x = (width - getWatermarkLength(content, g)) / 2;
int y = height / 2;
//画出水印 第一个参数是水印内容,第二个参数是x轴坐标,第三个参数是y轴坐标
g.drawString(content, x, y);
g.dispose();
String imgSuffix = "jpg";
String[] imgArr = imgName.split("\\.");
if (imgArr.length > 1) {
imgSuffix = imgArr[1];
}
//待存储的地址
String absPath=toPath+File.separator+ imgName;
// 输出图片
FileOutputStream outImgStream = new FileOutputStream(absPath);
ImageIO.write(bufImg, imgSuffix, outImgStream);
outImgStream.flush();
outImgStream.close();
}
/**
* 获取水印文字的长度
*
* @param waterMarkContent
* @param g
* @return
*/
private static int getWatermarkLength(String waterMarkContent, Graphics2D g) {
return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());
}
}
标签:String,int,水印,添加,static,param,new,图片
From: https://www.cnblogs.com/BoBo-B0BO/p/16652452.html