File size: 6,423 Bytes
a5931f6
 
bab0afc
 
 
 
 
 
a5931f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bab0afc
 
a5931f6
 
 
 
 
 
 
bab0afc
 
 
 
 
 
 
 
 
 
a5931f6
 
 
 
 
bab0afc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a5931f6
 
bab0afc
 
 
 
 
a5931f6
 
 
bab0afc
 
 
 
 
 
a5931f6
 
 
 
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from huggingface_hub import InferenceClient
import streamlit as st
from io import BytesIO
from PIL import Image
import requests
import base64
import time
import base64

if "draw_model" not in st.session_state:
    st.session_state.draw_model_list = {
        "现实-AbsoluteReality_v1.8.1":"https://api-inference.huggingface.co/models/digiplay/AbsoluteReality_v1.8.1",
        "现实-Absolute-Reality-1.81":"https://api-inference.huggingface.co/models/Lykon/absolute-reality-1.81",
        "动漫-AingDiffusion9.2":"https://api-inference.huggingface.co/models/digiplay/AingDiffusion9.2",
        "现实动漫-BluePencilRealistic_v01":"https://api-inference.huggingface.co/models/digiplay/bluePencilRealistic_v01",
        "动漫写实-Counterfeit-v2.5":"https://api-inference.huggingface.co/models/gsdf/Counterfeit-V2.5",
        "动漫写实-Counterfeit-v25-2.5d-tweak":"https://api-inference.huggingface.co/models/digiplay/counterfeitV2525d_tweak",
        "动漫可爱-Cuteyukimix":"https://api-inference.huggingface.co/models/stablediffusionapi/cuteyukimix",
        "动漫可爱-Cuteyukimixadorable":"https://api-inference.huggingface.co/models/stablediffusionapi/cuteyukimixadorable",
        "现实动漫-Dreamshaper-7":"https://api-inference.huggingface.co/models/Lykon/dreamshaper-7",
        "现实动漫-Dreamshaper_LCM_v7":"https://api-inference.huggingface.co/models/SimianLuo/LCM_Dreamshaper_v7",
        "动漫3D-DucHaitenDreamWorld":"https://api-inference.huggingface.co/models/DucHaiten/DucHaitenDreamWorld",
        "现实-EpiCRealism":"https://api-inference.huggingface.co/models/emilianJR/epiCRealism",
        "现实照片-EpiCPhotoGasm":"https://api-inference.huggingface.co/models/Yntec/epiCPhotoGasm",
        "动漫丰富-Ether-Blu-Mix-b5":"https://api-inference.huggingface.co/models/tensor-diffusion/Ether-Blu-Mix-V5",
        "动漫-Flat-2d-Animerge":"https://api-inference.huggingface.co/models/jinaai/flat-2d-animerge",
        "动漫风景-Genshin-Landscape-Diffusion":"https://api-inference.huggingface.co/models/Apocalypse-19/Genshin-Landscape-Diffusion",
        "现实照片-Juggernaut-XL-v7":"https://api-inference.huggingface.co/models/stablediffusionapi/juggernaut-xl-v7",
        "现实风景-Landscape_PhotoReal_v1":"https://api-inference.huggingface.co/models/digiplay/Landscape_PhotoReal_v1",
        "艺术水墨-MoXin":"https://api-inference.huggingface.co/models/zhyemmmm/MoXin",
        "现实写实-OnlyRealistic":"https://api-inference.huggingface.co/models/stablediffusionapi/onlyrealistic",
        "现实-Realistic-Vision-v51":"https://api-inference.huggingface.co/models/stablediffusionapi/realistic-vision-v51",
        "初始-StableDiffusion-2-1":"https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-2-1",
        "初始-StableDiffusion-XL-0.9":"https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-0.9",
        "动漫-TMND-Mix":"https://api-inference.huggingface.co/models/stablediffusionapi/tmnd-mix",
        "animagine-XL-3.0":"https://api-inference.huggingface.co/models/cagliostrolab/animagine-xl-3.0",
        "艺术-Zavychromaxl-v3":"https://api-inference.huggingface.co/models/stablediffusionapi/zavychromaxlv3",
        "Dalle-v1.1":"https://api-inference.huggingface.co/models/dataautogpt3/OpenDalleV1.1",
        "Dalle-3-xl":"https://api-inference.huggingface.co/models/openskyml/dalle-3-xl",
        "playground-v2-美化":"https://api-inference.huggingface.co/models/playgroundai/playground-v2-1024px-aesthetic",
        "Dalle-proteus-v0.2":"https://api-inference.huggingface.co/models/dataautogpt3/ProteusV0.2",
    }
    st.session_state.draw_model = st.session_state.draw_model_list["Dalle-v1.1"]
    st.session_state.image_choice = True
    st.session_state.image_choice_name = "Huggingface"

show_app = st.container()

def change_paramater():
    st.session_state.draw_model = st.session_state.draw_model


def image_choice():
    if st.session_state.image_choice:
        st.session_state.image_choice = False
        st.session_state.image_choice_name = "Vispunk"
    else:
        st.session_state.image_choice = True
        st.session_state.image_choice_name = "Huggingface"


def huggingface_text_to_image(text):
    client = InferenceClient(model=st.session_state.draw_model_list[st.session_state.draw_model])
    image = client.text_to_image(text)
    return image


def query_vispunk(prompt):
    def request_generate(prompt):
        url = "https://motion-api.vispunk.com/v1/generate/generate_image"
        headers = {"Content-Type": "application/json"}
        data = {"prompt": prompt}
        try: 
            response = requests.post(url, headers=headers, json=data)
            return True,response.json()["task_id"]
        except Exception as e:
            st.error(f"Error: {e}")
            return False,None


    def request_image(task_id):
        url = "https://motion-api.vispunk.com/v1/generate/check_image_task"
        headers = {"Content-Type": "application/json"}
        data = {"task_id": task_id}
        try: 
            response = requests.post(url, headers=headers, json=data)
            return True,response.json()["images"][0]
        except Exception as e:
            return False,e
        
    flag_generate,task_id = request_generate(prompt)
    if flag_generate:
        while True:
            flag_wait,image_src = request_image(task_id)
            if not flag_wait:
                time.sleep(1)
            else:
                image_data = base64.b64decode(image_src)
                image = BytesIO(image_data)
                return True,image
    else:
        return False,task_id
    

def main(prompt):
    show_app.write("**You:** " + prompt)
    if st.session_state.image_choice:
        image = huggingface_text_to_image(prompt)
    else:
        flag,image = query_vispunk(prompt)
    show_app.image(image,caption=prompt,use_column_width=True)


with st.sidebar:
    st.session_state.image_choice = st.toggle(st.session_state.image_choice_name,value=st.session_state.image_choice,on_change=image_choice)
    if st.session_state.image_choice:
        st.session_state.draw_model = st.selectbox('Draw Models', sorted(st.session_state.draw_model_list.keys(),key=lambda x:x.split("-")[0]),on_change=change_paramater)
    else:
        pass


prompt = st.chat_input("Send your prompt")
if prompt:
    main(prompt)