skf15963's picture
Duplicate from fclong/summary
fb238e8
# from disco_huge import Diffuser
# from utils import *
from disco import Diffuser
import streamlit as st
from io import BytesIO
from PIL import Image
from disco import steps
@st.cache(show_spinner=False, allow_output_mutation=True) # 加装饰器, 只加载一次。
class ST_Diffuser(Diffuser):
def __init__(self, custom_path):
super().__init__(custom_path)
if __name__ == '__main__':
dd = ST_Diffuser(custom_path="IDEA-CCNL/Taiyi-Diffusion-532M-Nature") # 初始化
form = st.form("参数设置")
input_text = form.text_input('输入文本生成图像:', value='', placeholder='你想象的一个画面')
form.form_submit_button("提交")
uploaded_file = st.file_uploader("上传初始化图片(可选)", type=["jpg", "png", "jpeg"])
text_scale_norm = st.sidebar.slider('文本强度', 0.1, 1.0, 0.5, step=0.1)
text_scale = int(text_scale_norm * 10000)
res_skip_steps = st.sidebar.slider('加噪强度', 0.1, 1.0, 0.9, step=0.1)
skip_steps = int(steps - round(res_skip_steps * steps))
width = st.sidebar.slider('宽度', 384, 1024, 512, step=64)
heigth = st.sidebar.slider('高度', 384, 1024, 512, step=64)
with st.spinner('正在生成中...'):
capture_img = None
if uploaded_file is not None:
# To read file as bytes:
bytes_data = uploaded_file.getvalue()
# 将字节数据转化成字节流
bytes_data = BytesIO(bytes_data)
# Image.open()可以读字节流
capture_img = Image.open(bytes_data).convert('RGB').resize((width, heigth))
image_status = st.empty()
image_status.image(capture_img, use_column_width=True)
else:
image_status = st.empty()
if input_text:
# global text_prompts
input_text_prompts = [input_text]
image = dd.generate(input_text_prompts,
capture_img,
clip_guidance_scale=text_scale,
skip_steps=skip_steps,
st_dynamic_image=image_status,
init_scale=None,
side_x=width,
side_y=heigth) # 最终结果。实时显示修改generate里面的内容。
image_status.image(image, use_column_width=True)