Skip to content

Latest commit

 

History

History
277 lines (212 loc) · 5.61 KB

File metadata and controls

277 lines (212 loc) · 5.61 KB

🌐 Web应用快速启动指南

📋 目录


快速开始(30秒)

步骤1:进入项目目录

cd jiuxingHttp

步骤2:安装依赖(仅需一次)

pip install -r requirements.txt

步骤3:启动Web服务

python run_web_server.py

步骤4:打开浏览器

访问:http://127.0.0.1:5000


功能说明

🎨 可见水印

  • 生成结构化的视觉水印
  • 支持自定义颜色和透明度
  • 通过高频区域检测实现智能放置

🛡️ 对抗保护

  • 注入多频率的对抗性扰动
  • 防止AI模型的修复和移除
  • 边缘感知增强

🔒 隐形水印

  • 编码版权信息(作者、ID、时间戳)
  • 对JPEG压缩具有鲁棒性
  • 混合LSB和DCT算法

⚡ 快速处理

  • 支持PNG、JPG、BMP、TIFF格式
  • 最大50MB文件支持
  • 实时预览和比较

使用步骤

1️⃣ 上传图片

点击上传区域或拖拽图片到页面

2️⃣ 设置参数

  • 水印强度 (1-10): 水印的显著程度
  • 片段数量 (3-6): 水印碎片的个数
  • 扰动强度 (0.01-0.2): 对抗性扰动的强度
  • 作者名称 (可选): 版权信息

3️⃣ 生成水印

点击"生成水印"按钮

4️⃣ 查看结果

  • 原始图片 vs 受保护图片对比
  • 支持下载处理后的图片

常见问题

Q1: 为什么启动很慢?

A: 首次启动会初始化所有模块,通常需要5-10秒。之后访问会很快。

Q2: 能否从其他电脑访问?

A: 可以!使用你的IP地址代替127.0.0.1

http://<你的IP地址>:5000

Q3: 如何停止服务?

A: 在终端按 CTRL+C 停止

Q4: 上传的图片储存在哪里?

A:

  • 原始图片: uploads/ 文件夹
  • 处理后的图片: processed/ 文件夹

Q5: 支持哪些图片格式?

A: PNG, JPG, JPEG, BMP, TIFF

Q6: 最大能上传多大的文件?

A: 50MB


部署选项

选项1: 本地运行(推荐用于测试)

python run_web_server.py

✅ 简单快速 ⚠️ 仅本地或局域网可访问

选项2: 生产环境部署(使用Gunicorn)

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app

✅ 更稳定高效 ✅ 支持多并发请求

选项3: Docker容器化

# 创建Docker镜像
docker build -t watermark-system .

# 运行容器
docker run -p 5000:5000 watermark-system

选项4: 云端部署

  • 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