Skip to content

3155498108/ScrollGen

Repository files navigation

长卷轴滚动视频生成器

一个基于 Web 的图片转滚动视频工具,可以将多张图片自动拼接成平滑滚动的长卷轴视频。

Python Flask License

功能特性

可视化界面

  • 现代化 UI:基于 Bootstrap 5 的简洁响应式界面
  • 拖拽上传:支持拖拽文件夹或多个文件
  • 自动计算:根据图片尺寸自动计算滚动距离和速度
  • 实时进度:显示生成进度条和状态更新
  • 历史记录:查看和下载之前生成的视频

视频生成

  • 自动计算:总滚动距离由图片尺寸自动计算
  • 可调参数
    • 视频时长(10-300 秒)
    • 帧率(15-60 FPS)
    • 分辨率(720p/1080p/1440p/4K)
  • 智能缩放:图片自动缩放到目标高度,保持宽高比
  • 平滑滚动:根据总距离和时长自动计算滚动速度

支持格式

  • 输入:JPG、JPEG、PNG、WebP、BMP
  • 输出:MP4(H.264 编码)

快速开始

环境要求

  • Python 3.7 或更高版本
  • pip(Python 包管理器)

安装步骤

  1. 克隆项目
git clone https://github.com/yourusername/kngzguiji.git
cd kngzguiji
  1. 安装依赖
pip install -r requirements.txt
  1. 启动应用
# Windows 双击运行
start.bat

# 或手动启动
python api_server.py
  1. 打开浏览器 访问 frontend/index.html,应用会自动打开。

使用说明

第一步:选择图片

  • 点击"选择文件夹"或拖拽图片
  • 系统会自动根据图片尺寸计算总滚动距离

第二步:配置参数

  • 视频时长:设置视频长度(秒)
  • 帧率:选择帧率(越高越流畅,文件越大)
  • 分辨率:选择输出分辨率

第三步:生成视频

  • 点击"生成视频"按钮
  • 观看进度条直到完成

第四步:下载

  • 生成完成后点击下载按钮

工作原理

滚动速度会自动计算,确保所有图片完整显示:

滚动速度 = 总图片宽度 / 视频时长

其中总宽度是所有图片缩放到目标分辨率后的宽度之和。

项目结构

kngzguiji/
├── api_server.py           # Flask 后端 API
├── scroll_video_generator.py # 独立生成器脚本
├── requirements.txt         # Python 依赖
├── start.bat               # Windows 启动器
├── README.md               # 项目说明
├── frontend/               # 前端文件
│   ├── index.html         # 主页面
│   ├── css/
│   │   └── style.css      # 样式文件
│   └── js/
│       └── app.js         # 前端逻辑
├── uploads/                # 临时文件存储
└── output/                 # 生成视频输出目录

API 接口

接口 方法 描述
/api/health GET 健康检查
/api/tasks POST 创建任务
/api/tasks GET 获取任务列表
/api/tasks/{id} GET 获取任务详情
/api/tasks/{id}/output GET 下载视频
/api/tasks/{id} DELETE 删除任务

技术栈

后端

  • Flask:轻量级 Web 框架
  • Pillow:图像处理
  • MoviePy:视频生成
  • Flask-CORS:跨域支持

前端

  • Bootstrap 5:UI 框架
  • 原生 JavaScript:无框架依赖
  • Fetch API:HTTP 请求

配置参数

前端 UI 可修改默认设置:

参数 默认值 范围
视频时长 60秒 10-300秒
帧率 30 FPS 15-60 FPS
分辨率 1920x1080 多种选项

常见问题

Q: 视频生成很慢 A: 减少图片数量或降低分辨率。4K 视频需要更长的处理时间。

Q: 图片变形 A: 应用会将图片缩放到目标高度并保持宽高比。如需最佳效果,请使用高度相近的图片。

Q: 端口 5000 被占用 A: start.bat 会尝试释放该端口,或手动关闭占用该端口的进程。

许可证

MIT 许可证 - 可免费用于个人或商业项目。

贡献

欢迎提交问题或 Pull Request!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors