Spaces:
Running
Running
File size: 1,782 Bytes
e9c4020 aa37741 51e5e37 aa37741 1b88ba6 035c6aa aa37741 035c6aa aa37741 035c6aa aa37741 9f3650c aa37741 1b88ba6 e9c4020 9f3650c e9c4020 aa37741 e9c4020 aa37741 e9c4020 aa37741 42e0d78 e9c4020 9f3650c 1b88ba6 9f3650c e9c4020 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import gradio as gr
import imageio
import os
def edit_file(file, apply_loop, loop_count, apply_speed, speed_factor, apply_skip, frame_skip):
file_name = file.name.split("/")[-1]
base_name = file_name.rsplit(".", 1)[0]
# GIFの読み込み
reader = imageio.get_reader(file.name)
fps = reader.get_meta_data().get("fps", 10) # デフォルトFPSは10
# フレームスキップと速度調整
frames = []
for i, frame in enumerate(reader):
if apply_skip and i % frame_skip != 0: # フレームスキップを適用
continue
frames.append(frame)
# 再生速度調整
if apply_speed and speed_factor != 1:
fps = int(fps * speed_factor)
# GIFとして保存
output_path = f"{base_name}_edited.gif"
writer = imageio.get_writer(output_path, fps=fps, loop=0 if not apply_loop else loop_count)
for frame in frames:
writer.append_data(frame)
writer.close()
return output_path, output_path
# Gradioインターフェース
interface = gr.Interface(
fn=edit_file,
inputs=[
gr.File(label="GIFをアップロード"),
gr.Checkbox(label="ループ回数を変更する", value=True),
gr.Number(label="ループ回数(0は無限ループ)", value=0),
gr.Checkbox(label="再生速度を変更する", value=False),
gr.Number(label="再生速度の倍率(例: 2は2倍速)", value=1),
gr.Checkbox(label="フレームスキップを変更する", value=False),
gr.Number(label="フレームスキップ数(1以上)", value=1, minimum=1),
],
outputs=[
gr.File(label="ダウンロードリンク"),
gr.Image(label="プレビュー", type="filepath")
]
)
interface.launch()
|