调整 giftool

This commit is contained in:
2025-10-12 15:18:07 +08:00
parent c9d58e7498
commit e72bc283f8

View File

@ -141,17 +141,47 @@ async def _(
output_img = BytesIO()
adjusted_durations = [
max(10, int(dur / speed_factor)) for dur in selected_durations
dur / speed_factor for dur in selected_durations
]
if selected_frames:
selected_frames[0].save(
rframes = []
rdur = []
acc_mod_20 = 0
for i in range(len(selected_frames)):
fr = selected_frames[i]
du: float = adjusted_durations[i]
if du >= 20:
rframes.append(fr)
rdur.append(int(du))
acc_mod_20 = 0
else:
if acc_mod_20 == 0:
rframes.append(fr)
rdur.append(20)
acc_mod_20 += du
else:
acc_mod_20 += du
if acc_mod_20 >= 20:
acc_mod_20 = 0
if len(rframes) == 1 and len(selected_frames) > 1:
rframes.append(selected_frames[max(2, len(selected_frames) // 2)])
rdur.append(20)
if rframes:
rframes[0].save(
output_img,
format="GIF",
save_all=True,
append_images=selected_frames[1:],
duration=adjusted_durations,
append_images=rframes[1:],
duration=rdur,
loop=0,
optimize=False,
disposal=2,
transparency=0,
)
else:
raise BotExceptionMessage("错误:没有可输出的帧")