ziheWang commited on
Commit
5e73498
·
verified ·
1 Parent(s): 3b892b6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +75 -70
app.py CHANGED
@@ -1,70 +1,75 @@
1
- # app.py
2
-
3
- import gradio as gr
4
- from PIL import Image
5
- from generate_image import generate_ghibli_avatar
6
- from prompt_engineering import interpret_command
7
-
8
- # 初始记录
9
- session_prompt = ""
10
- latest_avatar = None
11
-
12
- def analyze_emotion_age(img: Image.Image) -> str:
13
- # 目前使用占位,未来可用 insightface 替代
14
- return "微笑的18岁青年"
15
-
16
- def generate_initial_avatar(image, description):
17
- global session_prompt, latest_avatar
18
- session_prompt = f"{description},风格为吉卜力风格人物头像"
19
- avatar = generate_ghibli_avatar(session_prompt, reference_image=image)
20
- latest_avatar = avatar
21
- return avatar
22
-
23
- def apply_user_command(command):
24
- global session_prompt, latest_avatar
25
- if not latest_avatar:
26
- return None, "请先上传图片并生成初始头像"
27
-
28
- new_prompt = interpret_command(command, session_prompt)
29
- session_prompt = new_prompt
30
- avatar = generate_ghibli_avatar(new_prompt, reference_image=None)
31
- latest_avatar = avatar
32
- return avatar, f"提示词已更新为:{new_prompt}"
33
-
34
- def finalize():
35
- return "感谢使用!希望你喜欢这个吉卜力头像 😊"
36
-
37
- with gr.Blocks(title="吉卜力头像生成器") as demo:
38
- gr.Markdown("# 🎨 吉卜力头像生成器\n上传照片,生成你的动漫形象,并用中文指令调整细节!")
39
-
40
- with gr.Row():
41
- image_input = gr.Image(type="pil", label="上传照片或拍照")
42
- description_output = gr.Textbox(label="分析结果", interactive=False)
43
-
44
- with gr.Row():
45
- gen_btn = gr.Button("生成初始头像")
46
- avatar_output = gr.Image(label="生成的头像")
47
-
48
- with gr.Row():
49
- user_command = gr.Textbox(label="输入你的修改指令(如:给我加一个红色头发)")
50
- command_btn = gr.Button("应用指令")
51
- feedback = gr.Textbox(label="系统反馈", interactive=False)
52
-
53
- final_btn = gr.Button("我满意啦!")
54
-
55
- # 功能绑定
56
- gen_btn.click(
57
- fn=lambda img: (analyze_emotion_age(img), generate_initial_avatar(img, analyze_emotion_age(img))),
58
- inputs=image_input,
59
- outputs=[description_output, avatar_output]
60
- )
61
-
62
- command_btn.click(
63
- fn=apply_user_command,
64
- inputs=user_command,
65
- outputs=[avatar_output, feedback]
66
- )
67
-
68
- final_btn.click(fn=finalize, outputs=feedback)
69
-
70
- demo.launch()
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ import gradio as gr
4
+ from PIL import Image
5
+ from generate_image import generate_ghibli_avatar
6
+ from prompt_engineering import interpret_command
7
+
8
+ # 初始记录
9
+ session_prompt = ""
10
+ latest_avatar = None
11
+
12
+ def analyze_emotion_age(img: Image.Image) -> str:
13
+ # 目前使用占位,未来可用 insightface 替代
14
+ return "微笑的18岁青年"
15
+
16
+ def generate_initial_avatar(image, description):
17
+ global session_prompt, latest_avatar
18
+ session_prompt = f"{description},风格为吉卜力风格人物头像"
19
+ avatar = generate_ghibli_avatar(session_prompt, reference_image=image)
20
+ latest_avatar = avatar
21
+ return avatar
22
+
23
+ def apply_user_command(command):
24
+ global session_prompt, latest_avatar
25
+ if not latest_avatar:
26
+ return None, "请先上传图片并生成初始头像"
27
+
28
+ new_prompt = interpret_command(command, session_prompt)
29
+ session_prompt = new_prompt
30
+ avatar = generate_ghibli_avatar(new_prompt, reference_image=None)
31
+ latest_avatar = avatar
32
+ return avatar, f"提示词已更新为:{new_prompt}"
33
+
34
+ def finalize():
35
+ return "感谢使用!希望你喜欢这个吉卜力头像 😊"
36
+
37
+ with gr.Blocks(title="吉卜力头像生成器") as demo:
38
+ gr.Markdown("# 🎨 吉卜力头像生成器\n上传照片,生成你的动漫形象,并用中文指令调整细节!")
39
+
40
+ with gr.Row():
41
+ image_input = gr.Image(type="pil", label="上传照片或拍照")
42
+ description_output = gr.Textbox(label="分析结果", interactive=False)
43
+
44
+ with gr.Row():
45
+ gen_btn = gr.Button("生成初始头像")
46
+ avatar_output = gr.Image(label="生成的头像")
47
+
48
+ with gr.Row():
49
+ user_command = gr.Textbox(label="输入你的修改指令(如:给我加一个红色头发)")
50
+ command_btn = gr.Button("应用指令")
51
+ feedback = gr.Textbox(label="系统反馈", interactive=False)
52
+
53
+ final_btn = gr.Button("我满意啦!")
54
+
55
+ # 功能绑定
56
+ gen_btn.click(
57
+ fn=lambda img: (analyze_emotion_age(img), generate_initial_avatar(img, analyze_emotion_age(img))),
58
+ inputs=image_input,
59
+ outputs=[description_output, avatar_output]
60
+ )
61
+
62
+ command_btn.click(
63
+ fn=apply_user_command,
64
+ inputs=user_command,
65
+ outputs=[avatar_output, feedback]
66
+ )
67
+
68
+ final_btn.click(fn=finalize, outputs=feedback)
69
+
70
+ demo.launch()
71
+ # app.py 文件末尾
72
+ if __name__ == "__main__":
73
+ gr.close_all()
74
+ demo.launch()
75
+