python批量gif图片转jpg
以下是使用Python将GIF图片转换为JPG格式的详细解决方案:
解决方案
from PIL import Image
import osdef gif_to_jpg(input_folder, output_folder, quality=85):"""将GIF图片转换为JPG格式(提取第一帧)参数:input_folder: 输入目录(包含GIF文件)output_folder: 输出目录(存放JPG文件)quality: 输出质量(1-100)"""# 创建输出目录os.makedirs(output_folder, exist_ok=True)# 遍历输入目录for filename in os.listdir(input_folder):if filename.lower().endswith('.gif'):try:# 构建完整路径input_path = os.path.join(input_folder, filename)output_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}.jpg")# 打开GIF文件with Image.open(input_path) as img:# 转换为RGB模式(JPG不支持调色板模式)rgb_img = img.convert('RGB')# 保存为JPGrgb_img.save(output_path, 'JPEG', quality=quality)print(f"转换成功:{filename} -> {os.path.basename(output_path)}")except Exception as e:print(f"处理 {filename} 时出错:{str(e)}")# 使用示例
gif_to_jpg(input_folder="path/to/gif_folder",output_folder="path/to/jpg_folder",quality=90
)
关键步骤说明
-
安装依赖库:
pip install Pillow
-
功能特性:
- 自动创建输出目录
- 保留原始文件名
- 错误处理机制
- 可调节输出质量
- 自动转换颜色模式
-
处理动态GIF(扩展方案):
def extract_gif_frames(input_path, output_folder):"""提取GIF所有帧并保存为JPG"""with Image.open(input_path) as img:for i, frame in enumerate(iter_frames(img)):frame.convert('RGB').save(f"{output_folder}/frame_{i:03d}.jpg",'JPEG',quality=90)def iter_frames(img):"""迭代GIF所有帧"""try:while True:yield imgimg.seek(img.tell() + 1)except EOFError:return
注意事项
- JPG不支持透明背景,透明区域会变为黑色
- 动态GIF转换后会变为静态图片(默认提取第一帧)
- 质量参数建议值:85(平衡文件大小与画质)
- 处理前建议备份原始文件
如果需要处理多帧GIF或保留动画效果,建议使用视频格式(如MP4)作为输出格式。