# 图片/视频水印功能使用文档 ## 功能概述 本项目提供了在图片和视频左上角添加剧名水印的功能,支持: - ✅ **图片水印**:支持 JPG、PNG、GIF、BMP 等常见格式 - ✅ **视频水印**:支持 MP4 等常见视频格式 - ✅ **自定义样式**:可调整字体大小、位置、颜色 - ✅ **图片压缩**:支持添加水印同时压缩图片 - ✅ **视频帧提取**:可提取视频第一帧作为预览图 ## 依赖库 ### 图片处理 - **Thumbnailator 0.4.20**:轻量级图片处理库,支持压缩和缩放 - **Java AWT**:内置图形库,用于绘制文字水印 ### 视频处理 - **JavaCV 1.5.10**:Java 视频处理库 - **FFmpeg 6.1.1**:强大的音视频处理工具 ## 使用方法 ### 1. 图片水印 #### 基本使用 ```java import com.moka.gdtauto.util.ImageWatermarkUtil; // 基本用法:在左上角(50, 50)位置添加水印,字体大小40 ImageWatermarkUtil.addWatermark( "input.jpg", // 输入图片路径 "output.jpg", // 输出图片路径 "《绝世龙王》" // 水印文字 ); ``` #### 自定义位置和字体 ```java // 自定义字体大小和位置 ImageWatermarkUtil.addWatermark( "input.jpg", // 输入图片路径 "output.jpg", // 输出图片路径 "《绝世龙王》", // 水印文字 60, // 字体大小 100, // X坐标(从左边距) 100 // Y坐标(从顶部距) ); ``` #### 带压缩功能 ```java // 添加水印并压缩图片到80%大小 ImageWatermarkUtil.addWatermarkWithCompression( "input.jpg", // 输入图片路径 "output.jpg", // 输出图片路径 "《绝世龙王》", // 水印文字 0.8 // 缩放比例(0.8 = 80%) ); ``` ### 2. 视频水印 #### 基本使用 ```java import com.moka.gdtauto.util.VideoWatermarkUtil; // 基本用法:在左上角(50, 50)位置添加水印,字体大小40 VideoWatermarkUtil.addWatermark( "input.mp4", // 输入视频路径 "output.mp4", // 输出视频路径 "《绝世龙王》" // 水印文字 ); ``` #### 自定义位置和字体 ```java // 自定义字体大小和位置 VideoWatermarkUtil.addWatermark( "input.mp4", // 输入视频路径 "output.mp4", // 输出视频路径 "《绝世龙王》", // 水印文字 60, // 字体大小 100, // X坐标(从左边距) 100 // Y坐标(从顶部距) ); ``` #### 提取视频第一帧 ```java // 提取视频第一帧作为预览图 VideoWatermarkUtil.extractFirstFrame( "video.mp4", // 视频路径 "preview.jpg" // 输出图片路径 ); ``` ## 水印样式 - **字体**:微软雅黑(Microsoft YaHei),粗体 - **颜色**:白色文字 + 黑色描边,提供良好的可读性 - **透明度**:文字透明度 230/255,描边透明度 180/255 - **抗锯齿**:启用文字抗锯齿,确保清晰显示 ## 运行测试 ### 图片水印测试 ```bash # 编译 javac -cp "$(mvn dependency:build-classpath -q -DincludeScope=compile -Dmdep.outputFile=/dev/stdout):target/classes" \ -d target/test-classes \ src/test/java/com/moka/gdtauto/util/ImageWatermarkSimpleTest.java # 运行 java -cp "target/classes:target/test-classes:$(mvn dependency:build-classpath -q -DincludeScope=compile -Dmdep.outputFile=/dev/stdout)" \ com.moka.gdtauto.util.ImageWatermarkSimpleTest ``` ### 视频水印测试 ```bash # 编译 javac -cp "$(mvn dependency:build-classpath -q -DincludeScope=compile -Dmdep.outputFile=/dev/stdout):target/classes" \ -d target/test-classes \ src/test/java/com/moka/gdtauto/util/VideoWatermarkSimpleTest.java # 运行 java -cp "target/classes:target/test-classes:$(mvn dependency:build-classpath -q -DincludeScope=compile -Dmdep.outputFile=/dev/stdout)" \ com.moka.gdtauto.util.VideoWatermarkSimpleTest ``` ## 测试结果 运行测试后,结果文件会保存在以下目录: - **图片测试**:`target/test-output/watermark/` - **视频测试**:`target/test-output/video-watermark/` ## 注意事项 1. **视频处理较慢**:视频水印需要逐帧处理,处理时间较长,请耐心等待 2. **内存占用**:处理大文件时可能需要较多内存 3. **字体支持**:确保系统中有中文字体支持,否则可能显示乱码 4. **格式兼容性**: - 图片:支持 JPG、PNG、GIF、BMP - 视频:推荐使用 MP4 格式 ## 常见问题 ### Q: 水印文字显示乱码? A: 确保系统安装了中文字体,特别是"微软雅黑"或"宋体"。 ### Q: 视频处理失败? A: 检查视频编码格式是否支持,推荐使用 H.264 编码的 MP4 格式。 ### Q: 如何调整水印透明度? A: 在工具类中修改 `Color` 对象的第四个参数(alpha 值),范围 0-255。 ### Q: 能否在其他位置添加水印? A: 可以通过修改 x、y 参数来调整水印位置,或修改工具类支持更多位置选项。 ## 扩展开发 如需扩展功能,可以: 1. 在 [ImageWatermarkUtil.java](file:///Users/pudongliang/moka_workspace/gdt-auto/src/main/java/com/moka/gdtauto/util/ImageWatermarkUtil.java) 中添加图片相关功能 2. 在 [VideoWatermarkUtil.java](file:///Users/pudongliang/moka_workspace/gdt-auto/src/main/java/com/moka/gdtauto/util/VideoWatermarkUtil.java) 中添加视频相关功能 3. 参考测试用例了解使用方法 ## 性能参考 在测试环境中(macOS,JDK 21): - **图片处理**:1920x1080 图片约 50-100ms - **视频处理**:3秒 720p 视频(10fps)约 1-2秒 - **帧提取**:单帧提取约 50ms 实际性能取决于硬件配置和文件大小。