调整 giftool
This commit is contained in:
@ -141,17 +141,47 @@ async def _(
|
|||||||
output_img = BytesIO()
|
output_img = BytesIO()
|
||||||
|
|
||||||
adjusted_durations = [
|
adjusted_durations = [
|
||||||
max(10, int(dur / speed_factor)) for dur in selected_durations
|
dur / speed_factor for dur in selected_durations
|
||||||
]
|
]
|
||||||
|
|
||||||
if selected_frames:
|
rframes = []
|
||||||
selected_frames[0].save(
|
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,
|
output_img,
|
||||||
format="GIF",
|
format="GIF",
|
||||||
save_all=True,
|
save_all=True,
|
||||||
append_images=selected_frames[1:],
|
append_images=rframes[1:],
|
||||||
duration=adjusted_durations,
|
duration=rdur,
|
||||||
loop=0,
|
loop=0,
|
||||||
|
optimize=False,
|
||||||
|
disposal=2,
|
||||||
|
transparency=0,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise BotExceptionMessage("错误:没有可输出的帧")
|
raise BotExceptionMessage("错误:没有可输出的帧")
|
||||||
|
|||||||
Reference in New Issue
Block a user