Skip to content

DeerAnna1/MakeEmoji

Repository files navigation

Image to GIF MVP

上传静态图片和动作提示词,由图像编辑模型一次生成 3×2 六格动作帧表,再在本地去除绿幕、切帧、统一缩放与基线并合成循环 GIF。

运行

需要 Python 3.10+。

# 当前工作区已经安装在 .venv312
source .venv312/bin/activate
cp .env.example .env
# 编辑 .env,填入 DASHSCOPE_API_KEY
uvicorn app.main:app --reload

打开 http://127.0.0.1:8000。可先访问 /api/health 检查配置。

技术栈

  • 前端:原生 HTML、CSS、JavaScript,无构建步骤
  • Web API:FastAPI + Uvicorn
  • 异步任务:进程内 asyncio(仅适合 MVP)
  • 动作帧生成:Provider 模式;当前默认阿里百炼 wan2.7-image-pro,可切换 OpenAI
  • GIF 处理:Pillow,负责绿幕移除、3×2 切帧、统一主体基线和 GIF 编码
  • 状态存储:SQLite
  • 文件存储:本地目录,或通过 boto3 接入 S3/COS/OSS 兼容存储

测试

测试使用固定演示帧表,不调用图像 API,不产生费用:

.venv312/bin/python -m unittest tests.test_mvp -v

存储

默认把结果放在 data/public/generated。设置 STORAGE_BACKEND=s3 后可上传到 AWS S3;腾讯 COS、阿里 OSS 如果启用了 S3 兼容访问,也可以通过 S3_ENDPOINT_URL 接入。完整配置见 .env.example

当前异步任务在应用进程中执行,适合 MVP。生产环境需要把 process_job 移到 Celery、RQ 或云任务队列,避免服务重启后任务丢失。

Docker 部署

当前版本适合部署在一台带持久化磁盘的 Linux 服务器上。必须保持单个 Uvicorn worker。

  1. 在服务器安装 Docker,上传或克隆项目。
  2. 复制并填写生产配置:
cp .env.example .env

至少设置 DOMAINDASHSCOPE_API_KEYFRAME_PROVIDER=alibabaSTORAGE_BACKEND=local。不要把 .env 提交到 Git。

  1. 把域名的 A 记录指向服务器公网 IP,并在云防火墙开放 TCP 80、443 和 SSH 22。
  2. 启动:
docker compose -f compose.prod.yml up -d --build
docker compose -f compose.prod.yml ps
docker compose -f compose.prod.yml logs -f app

Caddy 会自动申请和续期 HTTPS 证书。SQLite、上传图片和生成结果保存在宿主机 data/,升级容器不会丢失。

更新版本:

git pull
docker compose -f compose.prod.yml up -d --build

生产上线前应定期备份 data/。当并发任务增多时,把任务迁移到 Celery/RQ + Redis,并把文件迁移到 OSS/COS,不要直接增加 Uvicorn worker。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors