image2gif 工具完整开发与打包流程总结
项目功能
-
功能:将指定文件夹下的每张图片单独转换为 GIF。
-
输出:每张图片生成一个 GIF,放入
output文件夹。 -
支持参数:
-
-i/--input:输入图片目录(默认当前目录) -
-o/--output:输出 GIF 文件夹(默认output)
-
-
开发语言:Python 3.8+
-
依赖库:
Pillow
项目结构
main.py
main.py 示例:
import os
import argparse
from PIL import Image
def convert_images_to_gif(input_dir=".", output_dir="output"):
"""
将指定目录下的每张图片单独转换为 GIF,并放到输出文件夹
:param input_dir: 输入图片目录
:param output_dir: 输出 GIF 文件夹
"""
if not os.path.isdir(input_dir):
print(f"目录不存在: {input_dir}")
return
# 创建输出文件夹(如果不存在)
os.makedirs(output_dir, exist_ok=True)
# 获取图片文件
img_files = [
f for f in os.listdir(input_dir)
if f.lower().endswith(('.png', '.jpg', '.jpeg'))
]
if not img_files:
print(f"{input_dir} 中没有找到图片文件!")
return
for img_file in img_files:
img_path = os.path.join(input_dir, img_file)
output_name = os.path.join(output_dir,
os.path.splitext(img_file)[0] + ".gif")
try:
with Image.open(img_path) as img:
img.save(output_name, format="GIF")
print(f"已生成 {output_name}")
except Exception as e:
print(f"转换失败 {img_file}:{e}")
def main():
parser = argparse.ArgumentParser(
description="将图片文件夹中的每张图片单独转换为 GIF,输出到 output 文件夹")
parser.add_argument("-i",
"--input",
type=str,
default=".",
help="输入图片目录,默认当前目录")
parser.add_argument("-o",
"--output",
type=str,
default="output",
help="输出 GIF 文件夹,默认 output")
args = parser.parse_args()
convert_images_to_gif(args.input, args.output)
if __name__ == "__main__":
main()
本地开发与测试
- 创建虚拟环境:
python -m venv venv
source venv/Scripts/activate # Windows
# 或 source venv/bin/activate # Linux/macOS
- 安装依赖:
pip install pillow
- 本地测试: 在当前文件夹增加几张图片测试,执行会导出git格式文件
python main.py
打包成 EXE(Windows)
- 安装 PyInstaller:
pip install pyinstaller
- 打包命令:
pyinstaller --onefile --name image2gif main.py
-
可选:
-
去掉
--icon临时测试。 -
--add-data如果有资源文件需要打包。
-
-
打包完成后,生成文件在:
dist/
├─ image2gif.exe
- 运行 EXE:
# 默认输出到 output 文件夹
image2gif.exe
# 指定输入输出目录
image2gif.exe -i "C:\Users\you\Pictures" -o "C:\Users\you\GIFs"
- 程序会自动创建
output文件夹(或你指定的输出文件夹)并生成 GIF。
注意事项
-
路径:运行 EXE 时最好使用绝对路径。
-
图标文件:必须存在并为
.ico格式,否则 PyInstaller 会报错。 -
虚拟环境:打包前在干净的虚拟环境中安装依赖,可避免多余库