Java图片加水印

采用Java自带的Image IO

废话不多说,上菜

1.  文字水印

 1 import sun.font.FontDesignMetrics;
 2 
 3 import javax.imageio.ImageIO;
 4 import java.awt.*;
 5 import java.awt.image.BufferedImage;
 6 import java.io.File;
 7 import java.io.FileOutputStream;
 8 import java.io.IOException;
 9 
10 /**
11  * @Author ChengJianSheng
12  * @Date 2021/6/10
13  */
14 public class WatermarkUtil {
15 
16     public static void main(String[] args) throws IOException {
17         addText("F:/1.jpeg", "我的梦想是成为火影");
18     }
19 
20     /**
21      * 加文字水印
22      * @param srcPath   原文件路径
23      * @param content   文字内容
24      * @throws IOException
25      */
26     public static void addText(String srcPath, String content) throws IOException {
27         //  读取原图片信息
28         BufferedImage srcImage = ImageIO.read(new File(srcPath));
29         int width = srcImage.getWidth();
30         int height = srcImage.getHeight();
31 
32         //  创建画笔,设置绘图区域
33         BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
34         Graphics2D g = bufferedImage.createGraphics();
35         g.drawImage(srcImage, 0, 0, width, height, null);
36 //        g.drawImage(srcImage.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
37 
38         g.setFont(new Font("宋体", Font.PLAIN, 32));
39         g.setColor(Color.RED);
40 
41         //  计算文字长度
42         int len = g.getFontMetrics(g.getFont()).charsWidth(content.toCharArray(), 0, content.length());
43         FontDesignMetrics metrics = FontDesignMetrics.getMetrics(g.getFont());
44         int len2 = metrics.stringWidth(content);
45         System.out.println(len);
46         System.out.println(len2);
47 
48         //  计算文字坐标
49         int x = width - len - 10;
50         int y = height - 20;
51 //        int x = width - 2 * len;
52 //        int y = height - 1 * len;
53 
54         g.drawString(content, x, y);
55 
56         g.dispose();
57 
58         //  输出文件
59         FileOutputStream fos = new FileOutputStream("F:/2.png");
60         ImageIO.write(bufferedImage, "png", fos);
61         fos.flush();
62         fos.close();
63     }
64 
65 }
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Java图片加水印