javaCV图像处理系列:
javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作

前言:

这是个很常用的操作,一般我们的网站在用户上传图片时都会给图片添加一个水印以防止其他站点盗图的行为

实现功能:①给图片增加文字水印②给图片增加图片水印

一、核心功能实现:

1、添加文字水印

// 加文字水印public void mark(BufferedImage bufImg, Image img, String text, Font font, Color color, int x, int y) {Graphics2D g = bufImg.createGraphics();g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null);g.setColor(color);g.setFont(font);g.drawString(text, x, y);g.dispose();}

2、添加图片水印

// 加图片水印public void mark(BufferedImage bufImg, Image img, Image markImg, int width, int height, int x, int y) {Graphics2D g = bufImg.createGraphics();g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null);g.drawImage(markImg, x, y, width, height, null);g.dispose();}

以上两个方法实现了最核心的功能:给图片添加水印。

补充:

为什么要这么写?

考虑到该方法不仅可以用于给图片文件增加水印,而且还可以给视频的每一帧图像也添加,所以为了方便不同场合重复使用,去除了不必要的依赖关系。

有了核心的两个方法就我们可以给图片文件增加水印了

二、功能性实现

1、给图片增加文字水印

/*** 给图片增加文字水印* * @param imgPath*            -要添加水印的图片路径* @param outImgPath*            -输出路径* @param text-文字* @param font*            -字体* @param color*            -颜色* @param x*            -文字位于当前图片的横坐标* @param y*            -文字位于当前图片的竖坐标*/public void mark(String imgPath, String outImgPath, String text, Font font, Color color, int x, int y) {try {// 读取原图片信息File imgFile = null;Image img = null;if (imgPath != null) {imgFile = new File(imgPath);}if (imgFile != null && imgFile.exists() && imgFile.isFile() && imgFile.canRead()) {img = ImageIO.read(imgFile);}int imgWidth = img.getWidth(null);int imgHeight = img.getHeight(null);// 加水印BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);mark(bufImg, img, text, font, color, x, y);// 输出图片FileOutputStream outImgStream = new FileOutputStream(outImgPath);ImageIO.write(bufImg, "jpg", outImgStream);outImgStream.flush();outImgStream.close();} catch (Exception e) {e.printStackTrace();}}

2、给图片增加图片水印

/*** 给图片增加图片水印* * @param inputImg*            -源图片,要添加水印的图片* @param markImg*            - 水印图片* @param outputImg*            -输出图片(可以是源图片)* @param width*            - 水印图片宽度* @param height*            -水印图片高度* @param x*            -横坐标,相对于源图片* @param y*            -纵坐标,同上*/public void mark(String inputImg, String markImg, String outputImg, int width, int height, int x, int y) {// 读取原图片信息File inputImgFile = null;File markImgFile = null;Image img = null;Image mark = null;try {if (inputImg != null && markImg != null) {inputImgFile = new File(inputImg);markImgFile = new File(markImg);}if (inputImgFile != null && inputImgFile.exists() && inputImgFile.isFile() && inputImgFile.canRead()) {img = ImageIO.read(inputImgFile);}if (markImgFile != null && markImgFile.exists() && markImgFile.isFile() && markImgFile.canRead()) {mark = ImageIO.read(markImgFile);}int imgWidth = img.getWidth(null);int imgHeight = img.getHeight(null);BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);mark(bufImg, img, mark, width, height, x, y);FileOutputStream outImgStream = new FileOutputStream(outputImg);ImageIO.write(bufImg, "jpg", outImgStream);outImgStream.flush();outImgStream.close();} catch (IOException e) {e.printStackTrace();}}

3、测试一下效果

文字水印的字体和颜色需要自行定义,这里我们使用宋体,14号字体,颜色选择橙色 - -!,坐标是x轴0,y轴等于字体的大小,也就是图片的左上角。

public static void main(String[] args) {Font font = new Font("宋体", Font.PLAIN, 14);// 原图位置, 输出图片位置, 水印文字颜色, 水印文字// new MarkText4J().mark("eguidMarkText2.jpg", "eguidMarkText2.jpg", "水印效果测试", font, Color.ORANGE, 0, 14);// 增加图片水印new MarkText4J().mark("eguidMarkText2.jpg", "eguid.jpg", "eguidMarkText3.jpg", 40, 20, 0, 14);}

简直棒极了,至此我们可以随意的给图片任意位置添加任意文字或者图片水印了。

最后,额。。。导出的图片比原本图片还小是什么鬼?欢迎加入讨论群一起讨论:371249677。- -!

转载于:https://www.cnblogs.com/eguid/p/6821579.html

用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)相关推荐

  1. java 批量为图片添加图标水印和文字水印

    需求,给指定目录下面以.jpg结尾的文件,添加图标水印和文字水印 文章目录 一.基础版本 二.升级版本 三.依赖 一.基础版本 package com.gblfy.util;import com.su ...

  2. java为word添加水印,图片水印和文字水印

    java为word添加水印,图片水印和文字水印 jdk1.5及以上 所需jar包:Spire.Office.jar 或 Spire.Doc.jar jar包下载:https://www.e-icebl ...

  3. java图片加文字水印_JAVA实现图片的修改,添加文字水印效果

    JAVA实现图片的修改,添加文字水印效果,根据文字内容生成图片,下面是具体的代码,以及测试方法: 实现类: package JavaMoImage; import javax.p_w_picpathi ...

  4. Java添加水印(图片水印,文字水印)

    第一种是添加文字水印: import java.awt.*; import java.awt.image.*; import java.io.*; import javax.swing.*; impo ...

  5. java给图片加水印_Java 为图片添加水印(图片水印,文字水印)

    Java 为图片添加水印(图片水印,文字水印) 2014-07-28·WeaponX 5267 次浏览 ```java import java.awt.Color; import java.awt.F ...

  6. java swt课程设计_Java-SWT怎么做图片水印和文字水印?

    Java添加水印 图片水印 文字水印 水印的处理...以下有两种方式: 第一种是添加文字水印: 第二种是添加图片水印: 现在附上代码 2种的源码 package com. yjf.image; imp ...

  7. java水印_Java实现给图片添加图片水印,文字水印及马赛克的方法示例

    本文实例讲述了Java实现给图片添加图片水印,文字水印及马赛克的方法.分享给大家供大家参考,具体如下: 可以在eclipse中新建个Utils类,把以下代码复制进去直接使用,以下方法实现单个或多个水印 ...

  8. 图片添加图片水印和文字水印

    title: 图片添加图片水印和文字水印 tags: 图片处理,水印,图片水印,文字水印 date: 2018-10-29 20:15:10 grammar_cjkRuby: true 前言:最近需要 ...

  9. 使用itext加图片水印或文字水印

    概述:使用itext 技术给pdf加水印方法. 实现原理:在不管是流还是临时pdf 预览之前.需先  生成不带水印的pdf,然后在通过itext工具方法生成带水印的pdf 依赖jar包:i-text- ...

最新文章

  1. 33条C#、.Net经典面试题目及答案
  2. android 沉浸栏灰色,Android 沉浸栏实践——踩坑
  3. ASP.NET系统退出(移除Session 、清除浏览器缓存)
  4. 边工作边刷题:70天一遍leetcode: day 6
  5. SpringBoot使用RequestBodyAdvice进行统一参数处理
  6. java中类的方法分为 类方法_Java中类的方法成员分为()方法和实例方法。
  7. LeetCode 第 69 场力扣双周赛
  8. 程序员如何才算真正的高效编程?
  9. 开源DataBase组件:FluentMigrator
  10. python的sorted函数和operator.itemgetter函数
  11. SPSS教程—如何安装加权kappa计算插件
  12. 未在此计算机上注册ActiveX控件!!!
  13. BinaryBomb实验
  14. tableau之仪表板与故事
  15. 言语如何成为交互设计的基础
  16. from matplotlib import pyplot as plt 的基本用法简介
  17. linux蓝牙传送的文件存放,嵌入式蓝牙文件传送方案的实现
  18. 解决Springboot2.X,无法用HttpSession报错org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated
  19. ERP、MES(作用、功能、部署、相关模块)
  20. 程序员如何从技术岗转为技术管理层?

热门文章

  1. 2022-2028年中国工业节能行业深度调研及投资前景预测报告
  2. HA: InfinityStones靶机渗透测试
  3. bert-as-service使用
  4. PyTorch入门学习(二):Autogard之自动求梯度
  5. seq2seq(1)- EncoderDecoder架构
  6. Error: Module build failed: TypeError: this.getResolve is not a function at Object.loader
  7. LeetCode简单题之检查两个字符串数组是否相等
  8. pass基础架构分析
  9. C++ OP相关注意事项
  10. 深度学习点云语义分割:CVPR2019论文阅读