gif-editor / app.py
soiz's picture
Update app.py
e9c4020 verified
raw
history blame
1.25 kB
import gradio as gr
from PIL import Image, ImageSequence
def edit_gif(gif_file, loop_count, speed_factor, frame_skip):
# GIFを読み込む
gif = Image.open(gif_file)
frames = []
durations = []
# フレームを順に処理
for i, frame in enumerate(ImageSequence.Iterator(gif)):
# 指定したフレーム数ごとにスキップ
if i % frame_skip != 0:
continue
frames.append(frame.copy())
durations.append(gif.info.get("duration", 100) // speed_factor) # 再生速度調整
# 新しいGIFを保存
output_path = "edited.gif"
frames[0].save(
output_path,
save_all=True,
append_images=frames[1:],
loop=loop_count,
duration=durations,
disposal=2
)
return output_path
# Gradioインターフェース
interface = gr.Interface(
fn=edit_gif,
inputs=[
gr.File(label="アップロードするGIF"),
gr.Number(label="ループ回数(0は無限ループ)", value=0),
gr.Number(label="再生速度の倍率(例: 2は2倍速)", value=1),
gr.Number(label="フレームスキップ数", value=1),
],
outputs=gr.File(label="編集されたGIF")
)
interface.launch()