text_to_image / app.py
prakhar patidar
bug fix
8137821
import uuid
import json
import streamlit as st
from PIL import Image
from diffusers import StableDiffusionPipeline
import torch
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float32)
# pipe = pipe.to("cuda")
st.title("Convert Text To Image :sunglasses:")
def load_metadata():
metadata = []
try:
with open("metadata.json", "r") as f:
metadata = json.load(f)
except:
print("json file doesn't exist")
return metadata
def update_metadata(data):
metadata = []
try:
with open("metadata.json", "r") as f:
metadata = json.load(f)
except:
print("json file doesn't exist")
metadata.append(data)
with open("metadata.json", "w") as json_file:
json.dump(metadata, json_file)
def render_metadata(data):
st.write("Previous prompt results (common for all)")
for d in data:
st.write("Prompt: ", d["prompt"])
st.image(Image.open(d["file_name"]))
metadata = load_metadata()
with st.form("tti_form"):
prompt = st.text_input("Enter Prompt")
# Every form must have a submit button.
submitted = st.form_submit_button("Submit")
if submitted:
with st.spinner("Processing..."):
image_name = uuid.uuid4().hex + ".png"
st.write("prompt", prompt)
image = pipe(prompt).images[0]
# test mode - comment above and uncomment following
# image = Image.open("abcd.png")
pil_image = Image.fromarray(image)
st.image(image)
# save image
data = {"file_name": image_name, "prompt": prompt}
pil_image.save(image_name)
# with open(image_name, 'wb') as f:
# f.write(image)
update_metadata(data)
st.success("Image generated!")
render_metadata(metadata)