本项目提供了在图片和视频左上角添加剧名水印的功能,支持:
import com.moka.gdtauto.util.ImageWatermarkUtil;
// 基本用法:在左上角(50, 50)位置添加水印,字体大小40
ImageWatermarkUtil.addWatermark(
"input.jpg", // 输入图片路径
"output.jpg", // 输出图片路径
"《绝世龙王》" // 水印文字
);
// 自定义字体大小和位置
ImageWatermarkUtil.addWatermark(
"input.jpg", // 输入图片路径
"output.jpg", // 输出图片路径
"《绝世龙王》", // 水印文字
60, // 字体大小
100, // X坐标(从左边距)
100 // Y坐标(从顶部距)
);
// 添加水印并压缩图片到80%大小
ImageWatermarkUtil.addWatermarkWithCompression(
"input.jpg", // 输入图片路径
"output.jpg", // 输出图片路径
"《绝世龙王》", // 水印文字
0.8 // 缩放比例(0.8 = 80%)
);
import com.moka.gdtauto.util.VideoWatermarkUtil;
// 基本用法:在左上角(50, 50)位置添加水印,字体大小40
VideoWatermarkUtil.addWatermark(
"input.mp4", // 输入视频路径
"output.mp4", // 输出视频路径
"《绝世龙王》" // 水印文字
);
// 自定义字体大小和位置
VideoWatermarkUtil.addWatermark(
"input.mp4", // 输入视频路径
"output.mp4", // 输出视频路径
"《绝世龙王》", // 水印文字
60, // 字体大小
100, // X坐标(从左边距)
100 // Y坐标(从顶部距)
);
// 提取视频第一帧作为预览图
VideoWatermarkUtil.extractFirstFrame(
"video.mp4", // 视频路径
"preview.jpg" // 输出图片路径
);
# 编译
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
# 编译
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/A: 确保系统安装了中文字体,特别是"微软雅黑"或"宋体"。
A: 检查视频编码格式是否支持,推荐使用 H.264 编码的 MP4 格式。
A: 在工具类中修改 Color 对象的第四个参数(alpha 值),范围 0-255。
A: 可以通过修改 x、y 参数来调整水印位置,或修改工具类支持更多位置选项。
如需扩展功能,可以:
在测试环境中(macOS,JDK 21):
实际性能取决于硬件配置和文件大小。