展开全部

package com.jc.ts.services;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

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

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

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

/**

*添加图片水印的服务类

* */

public class WaterMark {

/**

* @param sizeContext添加水印文字

* @param request 请求流对象

* @param request 响应e69da5e6ba9062616964757a686964616f31333335306330流对象

* */

@SuppressWarnings("deprecation")

public static void createMarkSize(String sizeContext,HttpServletRequest request,HttpServletResponse response) {

try {

String path=request.getRealPath(request.getServletPath());

FileInputStream in=new FileInputStream(path);

Image src=ImageIO.read(in);

int w=src.getWidth(null);

int h=src.getHeight(null);

BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);//构建画板

Graphics g=img.getGraphics();//得到画笔

g.drawImage(src,0,0,w,h,null);//把源图片写入画板

g.setColor(Color.red);

g.drawString(sizeContext,10,5); // 添加文字

g.dispose();//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream());

e.encode(img);

response.getOutputStream().close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* @param localPath 添加水印LOGO路径

* @param request 请求流对象

* @param request 响应流对象

**/

@SuppressWarnings("deprecation")

public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response) {

try {

FileInputStream file=new FileInputStream(localPath);

Image fimg=ImageIO.read(file);

int fw=fimg.getWidth(null);

int fh=fimg.getHeight(null);

String path=request.getRealPath(request.getServletPath());

FileInputStream in=new FileInputStream(path);

Image src=ImageIO.read(in);

int w=src.getWidth(null);

int h=src.getHeight(null);

BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);//构建画板

Graphics g=img.getGraphics();//得到画笔

g.drawImage(src,0,0,w,h,null);//把原图片写入画板

g.drawImage(fimg,w-20,h-15,fw,fh,null);//把水印图片写入画板

g.dispose();//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream());

e.encode(img);

response.getOutputStream().close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* @param localPath 添加水印图片路径

* @param request 请求流对象

* @param request 响应流对象

* @param width 水印图片的宽度

* @param height 水印图片的长度

**/

@SuppressWarnings("deprecation")

public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response,int width,int height) {

try {

FileInputStream file=new FileInputStream(localPath);

Image fimg=ImageIO.read(file);

int fw=fimg.getWidth(null);

int fh=fimg.getHeight(null);

String path=request.getRealPath(request.getServletPath());

FileInputStream in=new FileInputStream(path);

Image src=ImageIO.read(in);

int w=src.getWidth(null);//w为你过滤图片的宽度

int h=src.getHeight(null);//h为你过滤图片的长度

BufferedImage img=new BufferedImage(w+width,h+height,BufferedImage.TYPE_INT_RGB);//构建画板(画板的宽度为两个图片之和)

Graphics g=img.getGraphics();//得到画笔

g.drawImage(src,0,0,w,h,null);//把原图片写入画板

g.drawImage(fimg,width,height,fw,fh,null);//把水印图片写入画板

g.dispose();//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream());

e.encode(img);

response.getOutputStream().close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

注意第三个方法的注释地方g.drawImage(fimg,width,height,fw,fh,null);根据参数你在调调(放原图下面的)

过滤器调用

package com.jc.ts.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.jc.ts.services.WaterMark;

public class WaterFilter implements Filter {

public void destroy() {

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request=(HttpServletRequest)arg0;

HttpServletResponse response=(HttpServletResponse)arg1;

//WaterMark.createMarkSize("南京ts", request, response);

//WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response);

WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response,20,30);

//注意路径为绝对路径且三个效果不能同时执行

}

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

web.xml配置(写在servlet上面)

This is the description of my J2EE component

This is the display name of my J2EE component

WaterFilter

com.jc.ts.filter.WaterFilter

更多追问追答

追问

你这个是给图片添加水印的,不是给视频添加水印

追答

直接用ffmpeg吧。

ffmpeg -i D:\input.mpg -sameq -vhook "imlib2.dll -x 10 -y 10 -i c:\logo.png" -ar 22050 c:\11.mpg

3个参数分别是 输入文件、logo文件、和输出文件。logo一定得是png图片。

追问

这个在Java程序中怎么实现

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java给视频添加水印_用java实现对视频添加水印的代码或思路相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. 腾讯视频视频下载_如何下载腾讯视频

    今天继续给大家分享腾讯视频方面的内容.一般来说vip会员可以提前点播热播剧,对于追剧党来说是非常好的,不过是否开通也要根据自己需求,毕竟价格也不低啊,而且还是有一些用户能够通过一些简单但不值得提倡的方 ...

  3. java学习视频网站_学习Java的视频网站

    原标题:学习Java的视频网站 很多自学Java的人都发现网上的Java视频教程都会分章节讲解,但是总感觉很乱?那是因为你没有比较系统.全面的了解Java语言,没有将Java应用到实际项目中,那么有哪 ...

  4. java是什么格式_是java格式

    错误:编码GBK的不可映射字符的解决办法 最近在重新补javaSE的基础,编辑器编写完代码以后,在控制台运行代码段的时候,出现了以下的错误提示:错误:编码GBK的不可映射字符 在通过查询谷哥和度娘以后 ...

  5. java ee开发环境_设置Java EE 6开发环境

    java ee开发环境 本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. ...

  6. Java并发编程实战_福州java编程实战培训班排名

    如何选择福州java培训中心? 在福州,如果想迅速掌握java开发,参加福州java培训班无疑是一种非常有效的方式.但是,市场上有这么多的java培训机构,我们在选择的时候难免会眼花缭乱.福州java ...

  7. java的基本结构_【Java基础】基本程序设计结构

    摘自<Java核心技术 卷一> 希望能有自己的理解融入书中,融会贯通. 1.数据类型 1.1.JAVA中的基本类型 1.1.1.基本类型及其占用字节.默认值 注释:8bit = 1byte ...

  8. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

  9. java mysql jdbc 封装_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)...

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

最新文章

  1. java 创建servlet_javaweb02-创建第一个Servlet
  2. Python学习之面向对象编程
  3. 用神经网络做分子模型:乙烯和乙炔的实验数据
  4. Python如何安装包_Python系列学习笔记
  5. 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  6. OpenCV之cvSmooth函数平滑滤波
  7. Redis的常用功能
  8. 第二阶段个人工作总结08
  9. 基于 Kubernetes 实践弹性的 CI/CD 系统 1
  10. 吴恩达机器学习 8.应用机器学习的建议
  11. 前端 HTML 获取自定义标签tag 的值方法
  12. stat,查看文件属性
  13. iOS录音方法实用详解(配Demo下载)
  14. SmartRF_Packet_Sniffer_2.18.1软件__2.18.0软件
  15. 加速度传感器检测物体倾角的原理
  16. 大学计算机品牌活动总结,【推荐】大学工作总结4篇
  17. 标准差(Standard Deviation) ,标准误差(Standard Error)及置信区间(CI)通俗解释
  18. 1.大数据之EKL平台搭建以及使用
  19. GORM v2 关联预加载Preload和Joins的区别
  20. 旋转矩阵【北京航空航天大学】

热门文章

  1. 用友U8销售发货单序列号明细查询SQL语句
  2. html 素组长度,javascript如何定义数组长度?
  3. rsync客户端同步报错
  4. Linux 网络通讯命令 查看端口命令
  5. 苹果脸部识别到底安全吗?
  6. CleanMyMacX4.12最新免费版苹果电脑系统优化清理软件
  7. Git默认不区分大小写的坑
  8. C++实现红外Fir谱图文件转BMP图片文件
  9. Rust语言- Slice(切片)类型([u8])
  10. 20180529-C · Comic book characters · ggplot2 geom_bar 柱状图 条形图 facet_wrap 分面 · R 语言数据可视化 案例 源码