java 给图片添加水印(MultipartFile )

本文介绍了一种在图片上添加文字水印的方法,包括读取原图、设置字体和颜色、绘制水印并保存加水印后的图片。该方法使用Java编程语言实现,适用于需要保护图片版权或标明来源的场景。
/**
     *
     * @param file  文件
     * @param path  上传文件路径
     * @param folder  保存文件的文件夹
     * @return  返回文件路径
     * @throws Exception
     */
    public static String addWatermark(MultipartFile file, String path, String folder) throws Exception {
        // 原图位置, 输出图片位置, 水印文字颜色, 水印文字
        // 读取原图片信息
        Image srcImg = ImageIO.read(file.getInputStream());
        int srcImgWidth = srcImg.getWidth(null);
        int srcImgHeight = srcImg.getHeight(null);
        // 加水印
        BufferedImage bufImg = new BufferedImage(srcImgWidth,
                srcImgHeight,
                BufferedImage.TYPE_INT_RGB);
        //获取 Graphics2D 对象
        Graphics2D g = bufImg.createGraphics();
        //设置绘图区域
        g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
        //设置字体
        Font font = new Font("宋体", Font.PLAIN, 40);
        // 根据图片的背景设置水印颜色
        g.setColor(Color.green);
        g.setFont(font);
        //获取文字长度
        int len = g.getFontMetrics(
                g.getFont()).charsWidth("图片來源:戒烟的李白".toCharArray(),
                0,
                "图片來源:戒烟的李白".length());
        int x = srcImgWidth - len - 10;
        int y = srcImgHeight - 20;
        g.drawString("图片來源:戒烟的李白", x, y);
        g.dispose();
        // 输出图片
        String fileSrc = path + "/" + folder + "/" + UUIDUtils.getUUID() + ".jpg";
        File waterFile = new File(path + "/" + folder);
        if(!waterFile.exists()) waterFile.mkdirs();
        FileOutputStream outImgStream = new FileOutputStream(fileSrc);
        ImageIO.write(bufImg, "png", outImgStream);
        outImgStream.flush();
        outImgStream.close();
        return fileSrc;

    }

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值