Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import requests | |
| from PIL import Image | |
| import io | |
| import base64 | |
| import uuid | |
| def image_base64(image): | |
| if image is None: | |
| return None | |
| img_byte_arr = io.BytesIO() | |
| image.save(img_byte_arr, format='JPEG') | |
| img_byte_arr = img_byte_arr.getvalue() | |
| base64_image = base64.b64encode(img_byte_arr).decode('utf-8') | |
| return base64_image | |
| def process_images(Image, reference_image): | |
| #create two unique image names using uuid | |
| ref_img = uuid.uuid4().hex | |
| user_img = uuid.uuid4().hex | |
| model_image = [{'name': f"ref_img_{ref_img}.JPEG", 'image': image_base64(reference_image)}] | |
| user_image = [{'name': f"user_img_{user_img}.JPEG", 'image': image_base64(Image)}] | |
| req = { | |
| "input": { | |
| "model_workflow": "default_wf", | |
| "result_encoding_format": "base64", | |
| "model_encoding_format": "base64", | |
| "user_encoding_format": "base64", | |
| "model_image": model_image, | |
| "user_photo": user_image | |
| } | |
| } | |
| URI = "https://api.fotolabs.app/runsync" | |
| response = requests.post(URI, json=req, headers = { | |
| "Authorization": f"Bearer {'Y9IXJ0O3QBIY1T6M49GG9LHDF83F8Y51BTV2978C'}" | |
| }) | |
| if response.status_code == 200: | |
| data = response.json() | |
| task_id = data.get('id') | |
| img_str = response.json()['output']['message'][0] | |
| output_image = base64_to_img(img_str) | |
| print(task_id) | |
| return output_image | |
| else: | |
| return None | |
| def img_to_base64(img): | |
| buffer = io.BytesIO() | |
| img.save(buffer, format="JPEG") | |
| img_str = base64.b64encode(buffer.getvalue()).decode("utf-8") | |
| return img_str | |
| def base64_to_img(img_str): | |
| img_bytes = base64.b64decode(img_str) | |
| img = Image.open(io.BytesIO(img_bytes)) | |
| return img | |
| # Create Gradio interface | |
| iface = gr.Interface( | |
| fn=process_images, | |
| inputs=[gr.Image(label="Image", type="pil"), | |
| gr.Image(label="Reference Image", type="pil")], | |
| outputs=gr.Image(label="Output Image"), | |
| ).queue(default_concurrency_limit=5) | |
| iface.queue() | |
| # Launch the Gradio interface | |
| iface.launch() | |
| # iface.launch() | |