cd jiuxingHttppip install -r requirements.txtpython run_web_server.py- 生成结构化的视觉水印
- 支持自定义颜色和透明度
- 通过高频区域检测实现智能放置
- 注入多频率的对抗性扰动
- 防止AI模型的修复和移除
- 边缘感知增强
- 编码版权信息(作者、ID、时间戳)
- 对JPEG压缩具有鲁棒性
- 混合LSB和DCT算法
- 支持PNG、JPG、BMP、TIFF格式
- 最大50MB文件支持
- 实时预览和比较
点击上传区域或拖拽图片到页面
- 水印强度 (1-10): 水印的显著程度
- 片段数量 (3-6): 水印碎片的个数
- 扰动强度 (0.01-0.2): 对抗性扰动的强度
- 作者名称 (可选): 版权信息
点击"生成水印"按钮
- 原始图片 vs 受保护图片对比
- 支持下载处理后的图片
A: 首次启动会初始化所有模块,通常需要5-10秒。之后访问会很快。
A: 可以!使用你的IP地址代替127.0.0.1
http://<你的IP地址>:5000
A: 在终端按 CTRL+C 停止
A:
- 原始图片:
uploads/文件夹 - 处理后的图片:
processed/文件夹
A: PNG, JPG, JPEG, BMP, TIFF
A: 50MB
python run_web_server.py✅ 简单快速
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app✅ 更稳定高效 ✅ 支持多并发请求
# 创建Docker镜像
docker build -t watermark-system .
# 运行容器
docker run -p 5000:5000 watermark-system- Heroku:
git push heroku main - AWS: 上传到Elastic Beanstalk
- 阿里云: 函数计算或应用服务
编辑 run_web_server.py:
app.run(
host='0.0.0.0', # 改为'127.0.0.1'仅本地可访问
port=5000, # 改为其他端口
debug=True
)编辑 app.py:
UPLOAD_FOLDER = 'uploads' # 改为其他路径
PROCESSED_FOLDER = 'processed' # 改为其他路径
MAX_FILE_SIZE = 50 * 1024 * 1024 # 改为其他大小(字节)编辑 config.yaml:
watermark:
num_fragments: 4 # 水印碎片数量
fragment_scale: 0.3 # 碎片大小比例
opacity: 0.5 # 透明度 (0-1)上传后立即查看原图和处理结果的并排对比
支持同时上传多张图片进行处理
支持单独下载或批量打包下载处理结果
显示处理时间、文件大小、图片分辨率等信息
解决:
# 清除浏览器缓存
# 或强制刷新页面 (Ctrl+F5 或 Cmd+Shift+R)解决:
# 检查uploads文件夹权限
# 确保文件大小小于50MB
# 检查文件格式是否支持解决:
# 查看终端输出的错误信息
# 尝试用更小的图片
# 重启Flask服务解决:
# 修改端口号,或关闭占用该端口的程序
# 在 run_web_server.py 中改为其他端口| 项目 | 值 |
|---|---|
| 平均处理时间 | 1-3秒 |
| 支持最大图片 | 50MB |
| 并发支持 | 4+ (取决于服务器配置) |
| 水印容量 | ~100字符版权信息 |
用户上传图片
↓
[步骤1] 可见水印生成
├─ 高频区域检测 (Laplacian)
├─ 不规则碎片创建
└─ 内容感知混合
↓
[步骤2] 对抗性扰动注入
├─ 多频率噪声合成
├─ 边缘感知增强
└─ 空间频率优化
↓
[步骤3] 隐形水印编码(可选)
├─ JSON序列化
├─ Zlib压缩
├─ LSB+DCT混合编码
└─ CRC32校验
↓
生成受保护的图片
Web应用的所有操作都会记录在终端中,包括:
- 请求处理
- 文件上传/下载
- 水印生成
- 错误信息
Version: 1.0.0
Last Updated: 2025-12-21
Status: ✅ Ready to Deploy