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