Spaces:
Sleeping
Sleeping
import gradio as gr | |
import subprocess | |
import os | |
from PIL import Image | |
def resize_image(image_path, target_height, output_path): | |
# Open the image file | |
with Image.open(image_path) as img: | |
# Calculate the ratio to resize the image to the target height | |
ratio = target_height / float(img.size[1]) | |
# Calculate the new width based on the aspect ratio | |
new_width = int(float(img.size[0]) * ratio) | |
# Resize the image | |
resized_img = img.resize((new_width, target_height), Image.LANCZOS) | |
# Save the resized image | |
resized_img.save(output_path) | |
return output_path | |
def generate(image, prompt, seed): | |
print(image, prompt, seed) | |
image_path = os.path.splitext(image)[0] | |
image_name = os.path.basename(image_path) | |
resized=resize_image(image, 512, f"output/{image_name}.jpg") | |
print(f"IMAGE NAME: {image_name}") | |
command = f"python handrefiner.py --input_img {resized} --out_dir output --strength 0.55 --weights models/inpaint_depth_control.ckpt --prompt '{prompt}' --seed {seed}" | |
try: | |
result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) | |
output_path = 'output' | |
print("Output:", result.stdout) | |
print(output_path) | |
# List all files and directories in the given directory | |
contents = os.listdir("output") | |
# Print the contents | |
for item in contents: | |
print(item) | |
return f"output/{image_name}_0.jpg" | |
except subprocess.CalledProcessError as e: | |
print("Error:", e.stderr) | |
return None | |
css=""" | |
#col-container{ | |
max-width: 860px; | |
margin: 0 auto; | |
} | |
""" | |
with gr.Blocks(css=css) as demo: | |
with gr.Column(elem_id="col-container"): | |
gr.HTML(""" | |
<h2 style="text-align: center;"> | |
HandRefiner | |
</h2> | |
<p style="text-align: center;"> | |
Refining Malformed Hands in Generated Images by Diffusion-based Conditional Inpainting <br /> | |
For demo purpose, every input images are resized to 512 height ratio | |
</p> | |
<p style="margin:12px auto;display: flex;justify-content: center;"> | |
<a href="https://huggingface.co/spaces/fffiloni/HandRefiner?duplicate=true"><img src="https://huggingface.co/datasets/huggingface/badges/resolve/main/duplicate-this-space-lg.svg" alt="Duplicate this Space"></a> | |
</p> | |
""") | |
with gr.Row(): | |
with gr.Column(): | |
image = gr.Image(type='filepath') | |
gr.Examples( | |
examples = [ | |
"examples/IMG_1050.jpeg", | |
"examples/IMG_1051.jpeg", | |
"examples/IMG_1052.jpeg", | |
"examples/IMG_1053.jpeg" | |
], | |
inputs = [image] | |
) | |
textbox = gr.Textbox(show_label=False, value="a person facing the camera, making a hand gesture, indoor") | |
seed = gr.Slider(label="Seed", minimum=0, maximum=1000000, value=643534) | |
button = gr.Button() | |
output_image = gr.Image(show_label=False, type="filepath", interactive=False) | |
button.click(fn=generate, inputs=[image, textbox, seed], outputs=[output_image]) | |
demo.queue(max_size=10).launch(inline=False, debug=True) |