开发的时候,有时候需要用到一些第三方资源。
这个时候拿到的第三方资源可能是合并到一起的整图
开发人员可能无法直观了解到这个序列帧动画的效果,另外在开发中可能需要将整图进行拆分。
为了满足这个需求,利用AI写了一个python脚本进行处理,希望对有需要的朋友能提供一点帮助。
示例代码如下:
from PIL import Image
import os
# 打开序列帧图集
sprite_sheet_path = r'地址:\原图名称.png'
sprite_sheet = Image.open(sprite_sheet_path)
# 自动识别图集大小
sheet_width, sheet_height = sprite_sheet.size
columns = 4 # 假设有4列
rows = 3 # 假设有3行
frame_width = sheet_width // columns
frame_height = sheet_height // rows
frames = []
# 创建单帧图像保存目录
output_dir = os.path.join(os.path.dirname(sprite_sheet_path), 'frames')
os.makedirs(output_dir, exist_ok=True)
# 提取每一帧并保存
for j in range(rows):
for i in range(columns):
left = i * frame_width
upper = j * frame_height
right = left + frame_width
lower = upper + frame_height
frame = sprite_sheet.crop((left, upper, right, lower))
frames.append(frame)
# 保存单帧图像,使用源文件名作为前缀
frame.save(os.path.join(output_dir, f'01_frame_{j*columns+i+1}.png'))
# 保存为GIF,使用源文件名作为前缀
gif_output_path = os.path.join(os.path.dirname(sprite_sheet_path), '01_output.gif')
frames[0].save(gif_output_path, save_all=True, append_images=frames[1:], loop=0, duration=100)
已经把这个序列帧工具封装到工具集里面了,感兴趣的朋友可以下载体验