public static void main(String[] args) throws IOException {
//读取图片文件信息
File file=new File("C:\Users\Administrator\Desktop\1.png");
//将图片文件转为 BufferedImage 的对象
BufferedImage image= ImageIO.read(file);//注意:这里需要抛一个异常,要不然read()会报错
addTextWaterMark(image,Color.cyan,28,"小卤蛋","C:\Users\Administrator\Desktop\test.png");
System.out.println("图片处理完成!");
}
/**
* 添加水印
* @param sourceImg 原图片对象
* @param textColor 文本颜色
* @param fontSize 字体大小
* @param text 文本内容
* @param outPath 图片输出路径
*/
public static void addTextWaterMark(BufferedImage sourceImg, Color textColor, int fontSize, String text, String outPath) {
//获取原图片的高和宽
int height=sourceImg.getHeight();
int width=sourceImg.getWidth();
//创建一个与原图片大小一样的图片
BufferedImage bufferedImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
//获取图片的画笔对象
Graphics2D dx=bufferedImage.createGraphics();
//将原图绘画到空白图片上
dx.drawImage(sourceImg,0,0,width,height,null);
//设置水印颜色
dx.setColor(textColor);
//这是水印字体
dx.setFont(new Font("宋体",Font.ITALIC,fontSize));
//设置水印内容存放的位置
/*int x=width-2*fontSize;
int y=height-fontSize/2;*/
int x = width - (text.length() + 42) * fontSize;
int y = height- fontSize * 1;
//设置水印内容
dx.drawString(text,x,y);
try(FileOutputStream outimage=new FileOutputStream(outPath)) {
//保存新生成的图片
ImageIO.write(bufferedImage,"png",outimage);
}catch (Exception op){
op.printStackTrace();
}finally {
//释放资源
dx.dispose();
}
}
标签:处理,BufferedImage,水印,int,fontSize,dx,图片
From: https://www.cnblogs.com/yz157/p/18075866