# gifmaker **Repository Path**: xmx0632/gifmaker ## Basic Information - **Project Name**: gifmaker - **Description**: A cross-platform tool for combining multiple images into a GIF animated image. 一个跨平台的gif图片制作工具,支持图片生成GIF,视频生成GIF。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: https://github.com/xmx0632/gifmaker - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-04 - **Last Updated**: 2025-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: Gif, Python ## README # GIF Maker 将多张图片或视频片段合并成一张GIF动态图片的跨平台工具。 ## 功能特点 - 将多张图片合并成一张GIF动态图片 - **支持从视频文件提取片段制作GIF** - 支持设置帧延迟时间 - 支持多种图片格式 - **支持将不同大小的图片调整为统一大小** - 跨平台支持:Windows、macOS Intel、macOS ARM架构和Linux ## 使用方法 ### 命令行使用 #### 从图片创建GIF ```bash # 基本用法 ./gif-maker images -i 图片目录 -o 输出文件名.gif -d 帧延迟(毫秒) # 示例 ./gif-maker images -i ./images -o output.gif -d 200 # 使用不同的文件匹配模式 ./gif-maker images -i ./images -o output.gif -d 200 -p "*.jpg" # 调整图片大小后创建GIF ./gif-maker images -i ./images -o resized.gif -d 200 -r -w 800 --height 600 # 使用填充模式(默认) ./gif-maker images -i ./images -o filled.gif -d 300 -r -w 250 --height 500 -k ``` ```bash # 使用居中模式 ./gif-maker images -i ./images -o centered.gif -d 300 -r -w 250 --height 500 -k --fill-mode center ``` ```bash # 向后兼容的旧语法(不推荐) ./gif-maker -i ./images -o output.gif -d 100 ``` #### 从视频创建GIF ```bash # 基本用法 - 提取整个视频 ./gif-maker video -i input.mp4 -o output.gif # 提取视频的特定片段(5秒到10秒) ./gif-maker video -i input.mp4 -o clip.gif -s 5 -e 10 # 调整帧率和大小 ./gif-maker video -i input.mp4 -o video_clip.gif -f 10 -r -w 480 --height 320 ``` 原始视频: 生成的GIF: ### 参数说明 #### 通用参数 - `-o, --output`: 输出GIF文件路径(必需) - `-r, --resize`: 是否调整图片大小 - `-w, --width`: 调整后的图片宽度 - `--height`: 调整后的图片高度 - `-k, --keep-aspect-ratio`: 是否保持原始宽高比,默认为是 #### 图片模式参数 - `-i, --input`: 输入图片目录(必需) - `-d, --duration`: 每一帧的延迟时间,单位为毫秒,默认为100 - `-p, --pattern`: 文件匹配模式,默认为"*.png" #### 视频模式参数 - `-i, --input`: 输入视频文件路径(必需) - `-s, --start`: 开始时间,单位为秒,默认为0 - `-e, --end`: 结束时间,单位为秒,默认为视频结束 - `-f, --fps`: 每秒提取的帧数,默认为10 - `-d, --duration`: 每一帧的延迟时间,单位为毫秒,默认根据fps自动计算 ## 安装说明 本工具提供了预编译的可执行文件,无需安装Python或其他依赖即可使用。 > **注意**:视频处理功能需要安装OpenCV库。如果使用预编译版本,该依赖已包含在内。如果从源码运行,需要额外安装 `opencv-python` 包。 ### Windows 下载`windows`目录中的`gif-maker.exe`文件,双击运行或通过命令行使用。 ### macOS Intel (x64) 下载`macos/x64`目录中的`gif-maker`文件,通过终端使用: ```bash chmod +x gif-maker ./gif-maker -i 图片目录 -o 输出文件名.gif ``` ### macOS ARM (Apple Silicon) 下载`macos/arm64`目录中的`gif-maker`文件,通过终端使用: ```bash chmod +x gif-maker ./gif-maker -i 图片目录 -o 输出文件名.gif ``` ### Linux 下载`linux`目录中的`gif-maker`文件,通过终端使用: ```bash chmod +x gif-maker ./gif-maker -i 图片目录 -o 输出文件名.gif ``` ## 从源代码构建 如果您想从源代码构建可执行文件,请按照以下步骤操作: 1. 安装Python 3.13或更高版本 2. 创建并激活虚拟环境: ```bash # 创建名为git_env的虚拟环境 python3 -m venv git_env # 在Windows上激活虚拟环境 # git_env\Scripts\activate # 在macOS/Linux上激活虚拟环境 source git_env/bin/activate ``` 3. 安装依赖: ```bash # 基本功能 pip install Pillow # 视频处理功能(可选) pip install opencv-python # 或者直接安装所有依赖 pip install -r requirements.txt ``` 4. 运行构建脚本:`python build.py` 5. 完成后可以退出虚拟环境:`deactivate` 构建完成后,可执行文件将位于`dist`目录中。 使用虚拟环境可以确保项目依赖不会与系统Python环境冲突,并且便于管理项目特定的依赖包。 ## 使用GitHub Actions自动发布 本项目配置了GitHub Actions工作流,可以自动构建并发布跨平台的可执行文件。 ### 发布新版本 #### 方法一:使用脚本发布 1. 确保所有代码变更已提交到仓库 2. 使用提供的发布脚本创建新版本: ```bash # 发布版本1.0.0 ./release.sh 1.0.0 ``` 3. 脚本会创建标签并推送到GitHub,触发GitHub Actions工作流 #### 方法二:使用GitHub网页手动触发 1. 在GitHub仓库页面上,点击“Actions”标签 2. 在左侧工作流列表中,选择“Build and Release” 3. 点击“Run workflow”按钮 4. 输入版本号(例如:1.0.0),并选择是否为预发布版本 5. 点击“Run workflow”开始构建 #### 构建结果 GitHub Actions将自动构建四种平台版本的可执行文件: - Windows - macOS Intel (x86_64) - macOS Apple Silicon (ARM64) - Linux 构建完成后,可执行文件将自动上传到GitHub Releases页面 ### 工作流说明 - 工作流配置文件位于`.github/workflows/build-and-release.yml` - 工作流可通过两种方式触发: - 推送以`v`开头的标签时自动触发(例如`v1.0.0`) - 在GitHub Actions页面上手动触发,并指定版本号 - 工作流会并行构建四种平台版本的可执行文件,包括两种macOS架构(Intel和Apple Silicon) - 工作流使用依赖缓存机制,显著减少重复安装时间,提高构建速度 - 缓存基于`requirements.txt`文件的哈希值,当依赖项变化时才会重新安装 - 构建完成后,工作流会创建一个新的GitHub Release并上传所有可执行文件 ## 赞赏码 | **支付宝** | **微信支付** | | :---: | :---: | | | | ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。