1.找一张图片
打开百度首页,右键点击百度的logo,另存为,图片格式为png,这种格式的图片画布透明,拿来做水印图片合适

左图就是被水印的图片,右图拿来做水印

2.编写代码
public class img09 {
//图片水印
public static void main(String[] args) throws Exception {
waterMark(new File("D:/img.jpg"), new File("D:/baidu.png"));
}
/**
* Description: dst为被水印的图像,logo为水印图像
*
* @date: 2023 11:56
* @params: [java.io.File, java.io.File]
* @return: void
*/
public static void waterMark(File dst, File logo) throws IOException {
//加载水印图像
var l = ImageIO.read(logo);
var lw = l.getWidth();
var lh = l.getHeight();
//加载被水印图像,添加水印图标效果
var d = ImageIO.read(dst);
//得到宽高
var sw = d.getWidth();
var sh = d.getHeight();
//获取画笔
var g = d.createGraphics();
//设置平滑
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
//设置水印图像的坐标,中心
int x = (sw - lw) / 2;
int y = (sh - lh) / 2;
//设置透明度,.1f透明度高
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, .3f));
//写入
g.drawImage(l, x, y, lw, lh, null);
//释放画笔内存
g.dispose();
ImageIO.write(d, "jpg", new File("D:/new.jpg"));
}
}
3.效果展示
