JAVA在图片上添加文字水印(源码+注释详解)
【摘要】 JAVA在图片上添加文字水印(源码+注释详解)
package suiyin;
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 yeqv
* @program A2
* @Classname Wimg
* @Date 2022/1/22 14:57
* @Email w16638771062@163.com
*/
public class Wimg {
//文字水印
public static void main(String[] args) {
//要添加水印的图片
File file = new File("C:\\Users\\w1663\\Pictures\\Camera Roll\\img.png");
//添加完水印输出的图片
String file1 = "C:\\Users\\w1663\\Pictures\\Camera Roll\\img1.png";
//水印文字
String st = "你好中国";
//文字颜色
var color = new Color(112, 211, 11, 180);
wimg(file, file1, st, color);
}
public static void wimg(File file, String file1, String st, Color color) {
try {
//读取图片信息
Image t = ImageIO.read(file);
//读取图片的宽度
int w = t.getWidth(null);
//读取图片的高度
int h = t.getHeight(null);
//建立画布开始绘画
BufferedImage bufferedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
//建立画笔
Graphics2D graphics2D = bufferedImage.createGraphics();
//将原图片的信息画入画布
graphics2D.drawImage(t, 0, 0, w, h, null);
//设置字体属性
Font font = new Font("宋体", Font.PLAIN, 40);
//设置画笔颜色
graphics2D.setColor(color);
//设置画笔字体属性
graphics2D.setFont(font);
//获取水印的指标
var fm = graphics2D.getFontMetrics(font.deriveFont(40f));
//设置字体坐标
int x = w - fm.stringWidth(st) - 10;
int y = h - 20;
//将水印画上
graphics2D.drawString(st, x, y);
//清空画笔释放资源
graphics2D.dispose();
//建立写入文件流
FileOutputStream out = new FileOutputStream(file1);
//将画布内容写入到目标文件中,格式为PNG
ImageIO.write(bufferedImage, "png", out);
//清空缓冲区
out.flush();
//关闭缓冲区
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)