File size: 2,591 Bytes
c1facc5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import gradio as gr
import boto3
import banana_dev as client
import os
from typing import Iterable
import gradio as gr
from gradio.themes.base import Base
from gradio.themes.utils import colors, fonts, sizes
from PIL import Image
import io
import base64
from io import BytesIO
import traceback
import uuid
from dotenv import load_dotenv
import gzip

load_dotenv()

BANANA_API_KEY = os.getenv("BANANA_API_KEY")
BANANA_MODEL_KEY = os.getenv("BANANA_MODEL_KEY")
BANANA_URL = os.getenv("BANANA_URL")

def predict(image, prompt,qr_code, negative_prompt, seed):
    try:
        my_model = client.Client(
            api_key=BANANA_API_KEY,
            model_key=BANANA_MODEL_KEY,
            url=BANANA_URL,
        )
        #target image
        with open(image.name, "rb") as f:
            image_bytes = f.read()
        image_encoded = base64.b64encode(image_bytes)
        image = image_encoded.decode("utf-8")

        print(image)
        print(negative_prompt)
        print(seed)
        print(qr_code)
        print(prompt)

        inputs = {
            "prompt" : prompt,
            "qr_code_content" : qr_code,
            "negative_prompt": negative_prompt,
            "image": image,
            "seed": seed
        }
        result, meta = my_model.call("/", inputs)
        output_bytes = result["outputs"]

        image_encoded = output_bytes.encode('utf-8')
        image_data = base64.b64decode(image_encoded)
        image_data = gzip.decompress(image_data)
        image_io = BytesIO(image_data)
        output_image = Image.open(image_io)
        return output_image, None
    except Exception as e:
        tb_str = traceback.format_exception(type(e), e, e.__traceback__)
        tb_str = "".join(tb_str)
        return None, tb_str

with gr.Blocks() as demo:                         
    title_with_logo = gr.Markdown("# Powered by Banana <img src='https://files.umso.co/lib_udQIfMXlGlflDxFd/rnqmq7j8oqug1kae.png' align='left' width='50' height='50'>")
    with gr.Column():                        
        image = gr.File(label="Image", file_count="single", scale=1)
        prompt=gr.Textbox(label="Prompt")
        qr_code=gr.Textbox(label="QR code link")
        negative_prompt= gr.Textbox(label="Negative Prompt")
        seed= gr.Textbox(label="Seed")
        btn = gr.Button("Run illusion-diffusion-hq")                       
        output_image = gr.Image(label="Output Image")  
        output_error = gr.Textbox(label="Error Message")  
    btn.click(predict, [image, prompt,qr_code, negative_prompt, seed], [output_image, output_error])

demo.launch()