@[TOC]
一、读取图片
这里读取本地文件,也可以读取服务器上的文件。
//读取图片文件
File imageFile = new File("D:\\2022-10-20.jpeg");
//解读为图片Buffered
BufferedImage bufferedImage = ImageIO.read(imageFile);
读取服务器上的文件。
URL url = new URL("https://test.png");
BufferedImage bufferedImage = ImageIO.read(url.openStream());
2、获取图片的像素
获取图片的宽和高,用于设置水印坐标。
//获取图片高和宽
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
3、创建Graphics2D对象
Graphics2D是java.awt包提供的工具,用于作画。
//创建Graphics2D
Graphics2D graphics2D = bufferedImage.createGraphics();
// 设置水印字体颜色为红色
graphics2D.setColor(Color.red);
// 设置水印字体、字型、字号
graphics2D.setFont(new Font("微软雅黑", Font.PLAIN, width/30));
// 设置水印位置:居中
graphics2D.drawString("我是水印",width/4,height/2);
// 安排---画板
graphics2D.dispose();
4、设置加过水印照片的输出路径
使用完流一定要关闭,不然会出现诡异的事情!!!
//输出图片路径
File newFile = new File("D:\\test.jpeg");
//转化为流
FileOutputStream fos = new FileOutputStream(newFile);
//输出图片
ImageIO.write(bufferedImage,"jpeg",fos);
//一定要关闭流
fos.close();
5、测试
public static void main(String[] args) {
try {
//文件
File imageFile = new File("D:\\2022-10-20.jpeg");
//获取当前图片
BufferedImage bufferedImage = ImageIO.read(imageFile);
//获取图片高和宽
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
//创建Graphics2D
Graphics2D graphics2D = bufferedImage.createGraphics();
// 设置字体颜色为红色
graphics2D.setColor(Color.red);
// 字体、字型、字号
graphics2D.setFont(new Font("微软雅黑", Font.PLAIN, width/10));
// 设置水印居中
graphics2D.drawString("我是水印",width/2,height/2);
// 关闭画板
graphics2D.dispose();
//输出图片路径
File newFile = new File("D:\\test.jpeg");
FileOutputStream fos = new FileOutputStream(newFile);
//输出图片
ImageIO.write(bufferedImage,"jpeg",fos);
//一定要关闭流
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}