栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA在图片上添加文字水印(源码+注释详解)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;


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();
        }

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号