Spaces:
Sleeping
Sleeping
| # app.py | |
| import gradio as gr | |
| from PIL import Image | |
| from generate_image import generate_ghibli_avatar | |
| from prompt_engineering import interpret_command | |
| # 初始状态记录 | |
| session_prompt = "" | |
| latest_avatar = None | |
| def analyze_emotion_age(img: Image.Image) -> str: | |
| # 占位描述(可替换成真实年龄/情绪识别) | |
| return "微笑的18岁青年" | |
| def generate_initial_avatar(image): | |
| global session_prompt, latest_avatar | |
| description = analyze_emotion_age(image) | |
| session_prompt = f"{description}" | |
| avatar = generate_ghibli_avatar(session_prompt) | |
| latest_avatar = avatar | |
| return description, avatar | |
| def apply_user_command(command): | |
| global session_prompt, latest_avatar | |
| if latest_avatar is None: | |
| return None, "请先上传图片并生成初始头像" | |
| session_prompt = interpret_command(command, session_prompt) | |
| avatar = generate_ghibli_avatar(session_prompt) | |
| latest_avatar = avatar | |
| return avatar, f"提示词已更新为:{session_prompt}" | |
| def finalize(): | |
| return "感谢使用!希望你喜欢这个吉卜力头像 😊" | |
| with gr.Blocks(title="吉卜力头像生成器") as demo: | |
| gr.Markdown("# 🎨 吉卜力头像生成器\n上传照片,生成你的动漫形象,并用中文指令调整细节!") | |
| with gr.Row(): | |
| image_input = gr.Image(type="pil", label="上传照片(仅用于分析年龄与情绪)") | |
| description_output = gr.Textbox(label="分析结果", interactive=False) | |
| with gr.Row(): | |
| gen_btn = gr.Button("生成初始头像") | |
| avatar_output = gr.Image(label="生成的头像") | |
| with gr.Row(): | |
| user_command = gr.Textbox(label="输入你的修改指令(如:给我加一个红色头发)") | |
| command_btn = gr.Button("应用指令") | |
| feedback = gr.Textbox(label="系统反馈", interactive=False) | |
| final_btn = gr.Button("我满意啦!") | |
| gen_btn.click( | |
| fn=generate_initial_avatar, | |
| inputs=image_input, | |
| outputs=[description_output, avatar_output] | |
| ) | |
| command_btn.click( | |
| fn=apply_user_command, | |
| inputs=user_command, | |
| outputs=[avatar_output, feedback] | |
| ) | |
| final_btn.click(fn=finalize, outputs=feedback) | |
| demo.launch() | |