文字和图片水印

给大家推荐个靠谱的公众号程序员探索之路,大家一起加油https://i-blog.csdnimg.cn/blog_migrate/93320939ba8f8b0a898e29429753f496.png ​ 

File file = new File(request.getServletContext().getRealPath(
				"WEB-INF/classes/xinzhizhu.jpg"));
		File file1 = new File(request.getServletContext().getRealPath(
				"WEB-INF/classes/qfhl.png"));
		// 文字水印
		// 1.把新之助的图像信息读取出来
		BufferedImage bufferedImage = ImageIO.read(new FileInputStream(file));

		// 2.拿到画布 也就是获取graphics
		Graphics graphics = bufferedImage.getGraphics();

		// 3.设置绘制文字的字体
		// BASELINE是文字的基线每一文字都有基线
		// CENTER_BASELINE就是在中间
		// 20指定的是大小
		// graphics.setFont(new Font("宋体", Font.CENTER_BASELINE, 20));

		// 4.设置字体的颜色 参数依次是 r g b 透明度
		// 0x代表的是十六进制
		// graphics.setColor(new Color(0xff, 0xff, 0xff, 0x88));
		// 5.画上字 参数是:所需要的字 字显示在图片的位置 横坐标 纵坐标
		// graphics.drawString("版权所有,zzh", bufferedImage.getWidth() / 2 - 80,
		// bufferedImage.getHeight() - 80);

		// ImageIO.write(bufferedImage, "jpg", response.getOutputStream());

		// 图片水印  和文字水印 前两步一样
		BufferedImage bufferedImage1 = ImageIO.read(new FileInputStream(file1));
		// 画一张图片上去 参数依次是 要加的谁赢 位置 x y 第三个参数是ImageObserver observer
		// 它的作用是观察图片是否正在被占用
		graphics.drawImage(bufferedImage1, bufferedImage.getWidth() / 2 - 80,
				bufferedImage.getHeight() - 80, null);
		// 这个一句话地作用是将加水印的图片 显示在浏览器上
		ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
		// 如果是想保存下来  直接传进去目标路径就可以了
		File saveFile = new File("D:\\csdn\\saveFile.jsp");
		ImageIO.write(bufferedImage, "jpg", saveFile);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
若要添加文字水印,你可以使用JavaCV中的OpenCV库中的putText函数将文本写入视频帧,然后将水印帧与视频帧混合。以下是一个示例代码: ```java import org.bytedeco.javacv.*; import org.bytedeco.opencv.opencv_core.*; import java.io.*; public class AddWatermark { public static void main(String[] args) throws Exception { //加载视频文件 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("input.mp4"); grabber.start(); //获取视频宽和高 int width = grabber.getImageWidth(); int height = grabber.getImageHeight(); //创建OpenCV的Mat对象来读取水印图片 Mat watermark = new Mat(height, width, CV_8UC3, new Scalar(0, 0, 0)); //设置文本字体、大小、颜色等属性 Scalar color = new Scalar(255, 255, 255); int fontFace = FONT_HERSHEY_SIMPLEX; double fontScale = 1.5; int thickness = 2; //在水印图片中写入文本 putText(watermark, "Watermark Text", new Point(width/4, height/2), fontFace, fontScale, color, thickness, LINE_AA, false); //一帧一帧地读取视频 Frame frame = null; while ((frame = grabber.grabFrame()) != null) { //将JavaCV的Frame对象转换成OpenCV的Mat对象 Mat matFrame = converterToMat(frame); //将水印图片与视频帧混合 addWeighted(matFrame, 1.0, watermark, 0.5, 0.0, matFrame); //将OpenCV的Mat对象转换成JavaCV的Frame对象 frame = converterToFrame(matFrame, frame.imageWidth, frame.imageHeight); //写入输出视频文件 recorder.record(frame); } grabber.stop(); recorder.stop(); } //将JavaCV的Frame对象转换成OpenCV的Mat对象 public static Mat converterToMat(Frame frame) { OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat(); return converter.convert(frame); } //将OpenCV的Mat对象转换成JavaCV的Frame对象 public static Frame converterToFrame(Mat mat, int width, int height) { OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat(); Frame frame = converter.convert(mat); frame.imageWidth = width; frame.imageHeight = height; return frame; } } ``` 在上面的代码中,我们创建了一个黑色的OpenCV Mat对象作为水印,并在其上使用putText函数将文本写入。然后,我们将水印帧与视频帧混合。最后,我们将处理后的视频帧写入输出视频文件。你可以根据需要更改文本的字体、大小、颜色和位置等属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值