1.情景展示

如何使用java实现为图片添加水印的功能?

2.导包

使用jdk即可实现功能开发,不需要额外的jar包。

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

3.添加图片水印

/**

* 为图片添加水印

* @explain 文字水印、图片水印

* @author Marydon

* @creationTime 2020年5月15日上午10:30:01

* @version 1.0

* @since

* @email marydon20170307@163.com

*/

public class Watermark {

/**

* 把图片印刷到图片上

* @param pressImg

* 水印文件

* @param targetImg

* 目标文件

* @param x

* x坐标

* @param y

* y坐标

*/

public final static void pressImage(String pressImg, String targetImg, int x, int y) {

try {

// 目标文件

File _file = new File(targetImg);

Image src = ImageIO.read(_file);

int wideth = src.getWidth(null);

int height = src.getHeight(null);

BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB);

Graphics g = image.createGraphics();

g.drawImage(src, 0, 0, wideth, height, null);

// 水印文件

File _filebiao = new File(pressImg);

Image src_biao = ImageIO.read(_filebiao);

int weight_biao = src_biao.getWidth(null);

int height_biao = src_biao.getHeight(null);

g.drawImage(src_biao, x, y, weight_biao, height_biao, null);

// 水印结束

g.dispose();

FileOutputStream out = new FileOutputStream(targetImg);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

4.添加文字水印

/**

* 打印文字水印图片

* @param pressText

* 文字

* @param targetImg

* 目标图片

* @param fontName

* 字体名

* @param fontStyle

* 字体样式

* @param color

* 字体颜色

* @param fontSize

* 字体大小

* @param x

* 偏移量

* @param y

* 偏移量

*/

public static void pressText(String pressText, String targetImg, String fontName, int fontStyle, Color color,

int fontSize, int x, int y) {

try {

File _file = new File(targetImg);

Image src = ImageIO.read(_file);

int weidth = src.getWidth(null);

int height = src.getHeight(null);

BufferedImage image = new BufferedImage(weidth, height, BufferedImage.TYPE_INT_RGB);

Graphics g = image.createGraphics();

g.drawImage(src, 0, 0, weidth, height, null);

g.setColor(color);

g.setFont(new Font(fontName, fontStyle, fontSize));

g.drawString(pressText, x, y);

g.dispose();

FileOutputStream out = new FileOutputStream(targetImg);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

5.效果展示

原图片

图片水印

将上面的水印添加到原图片右下角

public static void main(String[] args) {

String waterMarkImgPath = "C:\\Users\\Marydon\\Desktop\\水印-博客2.png";

String targetImgPath = "C:\\Users\\Marydon\\Desktop\\TIM图片20200515162045.jpg";

pressImage(waterMarkImgPath, targetImgPath, 880, 560);

}

文字水印

public static void main(String[] args) {

pressText("@博人传", "C:\\Users\\Marydon\\Desktop\\TIM图片20200515162045.jpg", "宋体", 0, new Color(248, 248, 255), 50, 1100, 570);

}

说明:

如上面的效果展示的那样,要想将水印打印到图片指定位置,进行动态设置的话,需要:

第一,原图片大小;

第二,水印大小;

满足这两个条件才能将水印打印到图片的指定位置,也就是可以进行动态位移。

其中,图片水印可以进行动态设置,而文字水印则实现不了,因为我们无法获取文字水印的大小。

调试水印输出位置也是个细致活呀。

另外,水印的偏移量一般情况下均为正值,图片左上角为起点0,0,不同于数学上的Y轴,向下偏移用正值表示。

写在最后

哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

java 给图片添加水印_java 为图片添加水印(文字水印、图片水印)相关推荐

  1. java生成word排版_java生成word(文字和图片)

    1.整体思路 利用xml模板,在模板中预留占位标识(${yourContent}),然后将xml转为ftl文件,通过Map传值填充对应的内容即可,word其实和html一样,也有自己的xml标签,表头 ...

  2. java文件下载并添加水印_Java下载文件加文字水印(Excel、PDF、图片)

    一.导出Excel加文字水印 方法:通过实现准备一个带有水印的Excel文件,然后将数据覆盖该文件然后输出. 比如我准备了如下的一个带水印的模板,我起名为water.xlsx(网上有如何给Excel加 ...

  3. Untiy添加水印并保存(包含文字转图片并打水印)

    添加水印代码: /// <summary>/// 添加水印/// </summary>/// <param name="background"> ...

  4. java生成文字与图片_java生成word(文字和图片)

    1.整体思路 利用xml模板,在模板中预留占位标识(${yourContent}),然后将xml转为ftl文件,通过Map传值填充对应的内容即可,word其实和html一样,也有自己的xml标签,表头 ...

  5. java 通过 itext生成pdf添加,插入文字,图片

    准备工作 引用pom <!--生成pdf--><dependency><groupId>com.itextpdf</groupId><artifa ...

  6. 如何让图片在html中自动填充颜色,如何使用传图水印功能在图片上传时自动添加文字或图片水印?...

    下面我们来了解一下小蚂蚁编辑器的功能"传图水印"!开启传图水印功能后,所有上传的图片会自动添加文字或图片水印,并且支持自定义设置水印的展现形式. 一.开启传图水印 ① 鼠标移动到首 ...

  7. 计算机文字环绕图片的方式有哪些,Word2003文字环绕图片方式怎么设置

    用Word2003编辑文档为了能让图片显示的效果更好,我们可能会设置文字环绕图片方式,下面是学习啦小编给大家整理的一些有关Word2003文字环绕图片方式的设置方法,希望对大家有帮助! Word200 ...

  8. html内容被背景图片遮住怎么办_完美实现文字置于图片之上且背景半透明

    之前发过一篇关于 将图片的说明文字显示在图片之上且背景半透明效果 的文章,讲述了如何将文字置于图片之上且背景半透明,但那个解决办法会出现一个问题,就是背景虽然半透明了,但文字也会半透明,今天发现百度旅 ...

  9. html单击图片效果显示,html点击文字显示图片

    这个是网页显示,图片是不需要下载的. 代码: 点击文字显示图片 ul { width: 400px; height: 600px; border-style: solid; border-width: ...

  10. php图片写入带问号_PHP实现文字写入图片

    /** * PHP实现文字写入图片*/ classwordsOnImg {public $config = null;/** * @param $config 传入参数 * @param $confi ...

最新文章

  1. python【蓝桥杯vip练习题库】ADV-350珠心算测验
  2. BeanUtils.copyProperties VS PropertyUtils.copyProperties
  3. 【转知乎】人工智能会是泡沫吗?
  4. C语言实现简单的面向对象例子
  5. 角谱传播法matlab模拟,角谱法分析高斯光
  6. MOSS服务器场迁移1-有关切换登录用户时需要刷新一次才能成功的问题
  7. Java中这7个方法,一不小心就用错了!
  8. Jquery调用WCF经验分享
  9. SIR模型和Python实现
  10. 自定义Excel中的快捷键(Alt +1)
  11. 组合索引怎么应该怎么选取引导列?
  12. 因使用率过低,谷歌翻译退出中国
  13. light动名词_—Thelightintheofficeisstillon.—Oh,Iforgot_____.[ ]A.tur
  14. 佳能2780打印机老出5100错误
  15. 查看本地windows密码方法
  16. 2021 MoDnet-V 抠图网络论文学习笔记
  17. 分析称诺基亚仅押宝WP成自救牵绊
  18. vue专题之vue项目端口号修改【四】
  19. VUE3(二十四)自定义alert弹窗组件
  20. 思科交换机-常用命令及配置

热门文章

  1. JS根据城市名称获取所在省份
  2. cka教程_区块链入门教程solidity函数详解
  3. 微商的十种实用推广方法
  4. Python绘图 好用的网址
  5. Java线程的状态及主要转化方法
  6. Win10安装注册机出错?
  7. 【好玩的小demo】微信QQ聊天数据统计分析
  8. 小程序 | 微信小程序实现倒计时(节日校庆日等倒计时)
  9. 微信小程序实现倒计时功能(超简单)
  10. 前端练习-CSS布局