java如何为图片加水印

简介: java如何为图片加水印

@[TOC]

一、读取图片

这里读取本地文件,也可以读取服务器上的文件。

        //读取图片文件
     File imageFile = new File("D:\\2022-10-20.jpeg");
            //解读为图片Buffered
     BufferedImage bufferedImage = ImageIO.read(imageFile);

读取服务器上的文件。

    URL url = new URL("https://test.png");
    BufferedImage bufferedImage = ImageIO.read(url.openStream());

2、获取图片的像素

获取图片的宽和高,用于设置水印坐标。

     //获取图片高和宽
    int width = bufferedImage.getWidth();
    int height = bufferedImage.getHeight();

3、创建Graphics2D对象

Graphics2D是java.awt包提供的工具,用于作画。

    //创建Graphics2D
    Graphics2D graphics2D = bufferedImage.createGraphics();
    // 设置水印字体颜色为红色
    graphics2D.setColor(Color.red);
    // 设置水印字体、字型、字号
    graphics2D.setFont(new Font("微软雅黑", Font.PLAIN, width/30));
    // 设置水印位置:居中
    graphics2D.drawString("我是水印",width/4,height/2);
    // 安排---画板
    graphics2D.dispose();

4、设置加过水印照片的输出路径

使用完流一定要关闭,不然会出现诡异的事情!!!

        //输出图片路径
        File newFile = new File("D:\\test.jpeg");
        //转化为流
        FileOutputStream fos = new FileOutputStream(newFile);
        //输出图片
        ImageIO.write(bufferedImage,"jpeg",fos);
        //一定要关闭流
        fos.close();

5、测试

    public static void main(String[] args) {
   
   
        try {
   
   
            //文件
            File imageFile = new File("D:\\2022-10-20.jpeg");
            //获取当前图片
            BufferedImage bufferedImage = ImageIO.read(imageFile);
            //获取图片高和宽
            int width = bufferedImage.getWidth();
            int height = bufferedImage.getHeight();
            //创建Graphics2D
            Graphics2D graphics2D = bufferedImage.createGraphics();
            // 设置字体颜色为红色
            graphics2D.setColor(Color.red);
            // 字体、字型、字号
            graphics2D.setFont(new Font("微软雅黑", Font.PLAIN, width/10));
            // 设置水印居中
            graphics2D.drawString("我是水印",width/2,height/2);
            // 关闭画板
            graphics2D.dispose();
            //输出图片路径
            File newFile = new File("D:\\test.jpeg");
            FileOutputStream fos = new FileOutputStream(newFile);
            //输出图片
            ImageIO.write(bufferedImage,"jpeg",fos);
            //一定要关闭流
            fos.close();
        } catch (IOException e) {
   
   
            e.printStackTrace();
        }
    }

6、结果如下

在这里插入图片描述

目录
相关文章
|
1月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
62 4
|
1月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
56 2
|
1月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
49 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
1月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
1月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
19 1
|
1月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
60 1
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
105 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
2月前
|
Java
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
这篇文章介绍了Java中FileInputStream和FileOutputStream的使用,包括如何读取和写入txt文件以及如何拷贝图片文件。
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
|
2月前
|
存储 缓存 监控
Java——图片文件位于 bin 目录下,下载新图片会导致应用程序重启
【9月更文挑战第22天】在Java应用中,若图片位于bin目录下且下载新图片导致应用重启,可能是因为部署方式不当或资源监控机制过于敏感。解决方法包括:更改图片存储位置至独立目录;配置应用服务器减少资源监控敏感度;使用独立资源服务器托管静态资源;优化代码减少资源重复加载。具体方案需根据应用实际情况和技术栈调整。
|
1月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
41 0