CoNR / app.py
nev's picture
Update source code links
8d0c06f
import numpy as np
import gradio as gr
import os
import base64
def get_base64(bin_file):
with open(bin_file, "rb") as f:
data = f.read()
return base64.b64encode(data).decode()
def conr_fn(character_sheets, pose_zip):
os.system("rm character_sheet/*")
os.system("rm result/*")
os.system("rm poses/*")
os.makedirs("character_sheet", exist_ok=True)
for i, e in enumerate(character_sheets):
with open(f"character_sheet/{i}.png", "wb") as f:
e.seek(0)
f.write(e.read())
e.seek(0)
os.makedirs("poses", exist_ok=True)
pose_zip.seek(0)
open("poses.zip", "wb").write(pose_zip.read())
os.system(f"unzip -d poses poses.zip")
os.system("sh infer.sh")
return "output.mp4"
with gr.Blocks() as ui:
gr.Markdown("CoNR demo")
gr.Markdown("<a target='_blank' href='https://colab.research.google.com/github/transpchan/Live3D-v2/blob/main/notebook.ipynb'> <img src='https://colab.research.google.com/assets/colab-badge.svg' alt='Open In Colab'/></a> [GitHub](https://github.com/megvii-research/CoNR/)")
gr.Markdown("Unofficial demo for [CoNR](https://github.com/transpchan/Live3D-v2).")
with gr.Row():
# with gr.Column():
# gr.Markdown("## Parse video")
# gr.Markdown("TBD")
with gr.Column():
gr.Markdown("## Animate character")
gr.Markdown("Character sheet")
character_sheets = gr.File(file_count="multiple")
gr.Markdown("Pose zip") # Don't hack
pose_video = gr.File(file_count="single")
# os.system("sh download.sh")
run = gr.Button("Run")
video = gr.Video()
run.click(fn=conr_fn, inputs=[character_sheets, pose_video], outputs=video)
gr.Markdown("## Examples")
sheets = "character_sheet_ponytail_example"
gr.Examples(fn=conr_fn, inputs=[character_sheets, pose_video], outputs=video,
examples=[[[os.path.join(sheets, x) for x in os.listdir(sheets)], "poses_template.zip"]], cache_examples=True, examples_per_page=1)
# ui.launch()
demo = ui
demo.launch()