一个高度模块化的去水印服务,支持 Cloudflare Worker 和 Node.js + Docker 两种部署方式,通过共用代码库实现 85% 代码复用率,确保功能完全一致。
watermark-remover/ ├── shared/ # 共用代码库 (85% 复用) │ ├── core/ # 核心去水印逻辑 │ ├── utils/ # 工具函数 (随机化、加密、图像) │ └── constants/ # 常量定义 ├── worker/ # Cloudflare Worker 版本 │ ├── src/index.js # Worker 适配层 │ └── wrangler.toml # Worker 配置 ├── nodejs/ # Node.js + Docker 版本 │ ├── src/ # Express 服务器 │ ├── public/test.html # 内置测试页面 │ ├── Dockerfile # Docker 配置 │ └── docker-compose.yml ├── tests/ # 统一测试套件 │ ├── test-suite.js # 跨平台测试 │ ├── test-page.html # 可视化测试 │ └── run-tests.js # 测试运行器 └── scripts/ └── deploy.sh # 统一部署脚本
git clone <repository-url>
cd watermark-remover
# 部署到开发环境
./scripts/deploy.sh worker --env dev
# 部署到生产环境
./scripts/deploy.sh worker --env prod
# 构建并运行 Docker 容器
./scripts/deploy.sh docker --port 3000
# 访问服务
curl http://localhost:3000/health
# 访问内置测试页面
open http://localhost:3000/test
./scripts/deploy.sh all --env prod
两个版本提供完全相同的 API 接口:
GET /health
POST /v1/remove-watermark Content-Type: application/json { "image_url": "https://example.com/image.jpg" }
POST /v1/remove-watermark/upload Content-Type: multipart/form-data image: <file>
{
"success": true,
"original_url": "https://example.com/image.jpg",
"watermark_removed_url": "https://result.com/processed.jpg"
}
# 测试 Node.js 版本
cd tests && node run-tests.js --env nodejs
# 测试 Worker 版本
node run-tests.js --env worker
# 测试所有版本
node run-tests.js --all
cd nodejs
npm install
npm start
# 访问 http://localhost:3000
cd worker
npm install
npm run dev
# 访问 http://localhost:8787
| 特性 | Cloudflare Worker | Node.js + Docker |
|---|---|---|
| 部署复杂度 | 简单 | 中等 |
| 扩展性 | 自动全球扩展 | 手动扩展 |
| 成本模式 | 按请求计费 | 固定成本 |
| 冷启动 | ~100ms | 无冷启动 |
| 运行环境 | V8 沙箱 | 完整 Node.js |
| 适用场景 | 低频使用,全球分发 | 高频使用,私有部署 |
MIT License - 详见 LICENSE 文件