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

JAVA在图片上设置水印图片(源码+注释详解)

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

JAVA在图片上设置水印图片(源码+注释详解)

package suiyin;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


public class Timg {
    public static void main(String[] args) {
        //源图片路径
        String st1 = "C:\Users\w1663\Pictures\Camera Roll\img.png";
        //水印图片路径
        String st2 = "C:\Users\w1663\Pictures\Camera Roll\sy.png";
        //目标图片路径
        String st3 = "C:\Users\w1663\Pictures\Camera Roll\img4.png";
        //水印图片旋转度
        Integer xz = 90;
        timg(st1, st2, st3, xz);

    }

    public static void timg(String st1, String st2, String st3, Integer xz) {
        try {
            //读取源图片信息
            var m = ImageIO.read(new File(st1));
            //创建画布
            BufferedImage img = new BufferedImage(m.getWidth(), m.getHeight(), BufferedImage.TYPE_INT_ARGB);
            //创建画笔
            var g = img.createGraphics();
            //将源图片信息画入画布
            g.drawImage(m, 0, 0, m.getWidth(), m.getHeight(), null);
            //设置对线段的锯齿状边缘处理
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            //新建图标对象读取水印图片
            ImageIcon imageIcon = new ImageIcon(st2);
            //获取图标的图片
            Image image = imageIcon.getImage();
            //设置图标的透明度
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
            //设置图标位置
            int x = img.getWidth() - image.getWidth(null) - 10;
            int y = img.getHeight() - 10;
            //判断旋转角度是否为空进行旋转
            if (xz != null) {
                g.rotate(Math.toDegrees(xz), img.getWidth() - image.getWidth(null) / 2 - 10, img.getHeight() - image.getHeight(null) / 2 - 10);
            }
            //将图标画入画布中
            g.drawImage(image, x, y - image.getHeight(null), null);
            //将图标和源图片结合
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
            //清空画笔
            g.dispose();
            //建立写入流目标图片对象
            FileOutputStream out = new FileOutputStream(st3);
            //将画布信息传入文件中
            ImageIO.write(img, "png", out);


        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}


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

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

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