文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用Java在图片上添加文字水印效果

2023-06-26 06:18

关注

这篇“怎么用Java在图片上添加文字水印效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Java在图片上添加文字水印效果”文章吧。

【1】获取原图片对象

首先,第一步,肯定是要让我们的程序,拿到需要处理的图片。

我们程序获取图片的方式,通常有两种,一种是通过下载到本地,从本地读取;另外一种就是通过网络地址进行获取。

(1.1)读取本地图片

怎么用Java在图片上添加文字水印效果

比如,我们将图片下载到了我们计算机本地(E:\imgs目录下),那么我们直接在main函数中,通过下面这段代码,就可以获取到图片对象。

// 读取图片文件File file = new File("E:/imgs/test.png");System.out.println("图片名称:" + file.getName());System.out.println("图片大小:" + file.length() / 1024 + " kb");// 将文件对象转化为图片对象BufferedImage image = ImageIO.read(file);System.out.println("图片宽度:" + image.getWidth() + " px");System.out.println("图片高度:" + image.getHeight() + " px");

 代码效果如下:

怎么用Java在图片上添加文字水印效果

(1.2)读取网络图片

如果图片是一个网络图片,我们可以直接获取它的地址进行下载,相关代码如下(网络图片的名称和类型,取决于下载者)。

URL url = new URL("https://zyq2022.oss-cn-chengdu.aliyuncs.com/test.png");BufferedImage image = ImageIO.read(url.openStream());System.out.println("图片宽度:" + image.getWidth() + " px");System.out.println("图片高度:" + image.getHeight() + " px");

代码效果如下:

怎么用Java在图片上添加文字水印效果

【2】创建画笔

经过上面的描述,我们已经获取到了原始图片,接下来我们还需要创建一个画笔,后面我们写出的文字样式,完全则由它来决定。它可以设置颜色,字体大小,字体样式等。

// 创建画笔(image为上一步的图片对象)Graphics2D pen = image.createGraphics();// 设置画笔颜色为白色pen.setColor(Color.WHITE);// 设置画笔字体样式为微软雅黑,斜体,文字大小为20pxpen.setFont(new Font("微软雅黑", Font.ITALIC, 20));

相关说明:

(1) pen.setColor(Color.WHITE); 

这行代码的意思是将画笔颜色设置为白色。

其他颜色还有:WHITE(白色)、LIGHT_GRAY(浅灰色)、GRAY(灰色)、DARK_GRAY(深灰色)、BLACK(黑色)、RED(红色)、PINK(粉红色)、ORANGE(橘黄色)、YELLOW(黄色)、GREEN(绿色)、MAGENTA(紫红色)、CYAN(青色)、BLUE(蓝色)

如果上面颜色都不满足你,或者你还想设置下字体透明度,你可以改为如下格式:

pen.setColor(new Color(179, 250, 233, 100));

这里的四个参数分别为 RGBA(不懂RGBA的点这里),四个参数的范围均是0-255;

(2)pen.setFont(new Font("微软雅黑", Font.ITALIC, 20));

Font.PLAIN(正常),Font.BOLD(粗体),Font.ITALIC(斜体)

【3】添加文字水印

下面这行代码就是添加文字水印的核心代码。

// 这三个参数分别为你的文字内容,起始位置横坐标(px),纵坐标位置(px)。pen.drawString("我是图片水印", 30, 550);

(3.1)如何确定水印位置 ?

首先,大家要明白,我们在说图片上的坐标,它一个表示法,具体如下:

怎么用Java在图片上添加文字水印效果

那么,我们如何确定我们水印的图片其实坐标呢?

我们可以将图片首先保存到本地,然后右键单击,选择画图工具类打开它。

怎么用Java在图片上添加文字水印效果

 打开后,我们将鼠标光标移动到我们需要添加文字的地方(如红色箭头处),则底部就会显示对应位置的坐标(蓝色箭头处),那么这个坐标我们就可以拿到,然后写入到程序代码里了。

怎么用Java在图片上添加文字水印效果

【4】获取处理图片

经过上面三次操作后,我们的图片添加文字就已经处理完成了,但他现在还保存在Java对象中,我们需要将他保存到本地,我们才能看得到效果(如:这里我将处理的图片保存到 test2.png 中)。

// 创建新图片文件File file = new File("E:/imgs/test2.png");// 将处理好的图片数据写入到新图片文件中FileOutputStream fos = new FileOutputStream(file);ImageIO.write(image, "png", fos);

最后执行代码,我们看到在原图片文件夹下,多了一个 test2.png 的图片。

怎么用Java在图片上添加文字水印效果

 我们打开 test2.png 图片后,可以看到文字水印已经添加成功了。

怎么用Java在图片上添加文字水印效果

【5】源代码

最后将前面解读的整个源码放在下面,供大家参考:

package com.zyq.util; import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.URL; import javax.imageio.ImageIO; public class ImgTest {     public static void main(String[] args) throws IOException {        // 读取本地图片文件        // File file = new File("E:/imgs/test.png");        // System.out.println("图片名称:" + file.getName());        // System.out.println("图片大小:" + file.length() / 1024 + " kb");        // 将文件对象转化为图片对象        // BufferedImage image = ImageIO.read(file);        // 获取网络图片        URL url = new URL("https://zyq2022.oss-cn-chengdu.aliyuncs.com/test.png");        BufferedImage image = ImageIO.read(url.openStream());        // 创建画笔        Graphics2D pen = image.createGraphics();        // 设置画笔颜色为白色        // pen.setColor(Color.WHITE);        pen.setColor(new Color(179, 250, 233, 200));        // 设置画笔字体样式为微软雅黑,斜体,文字大小为20px        pen.setFont(new Font("微软雅黑", Font.ITALIC, 20));        // 写上水印文字和坐标        pen.drawString("我是图片水印", 30, 550);        // 创建新图片文件        File file = new File("E:/imgs/test2.png");        // 将处理好的图片数据写入到新图片文件中        FileOutputStream fos = new FileOutputStream(file);        ImageIO.write(image, "png", fos);    }}

以上就是关于“怎么用Java在图片上添加文字水印效果”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯