text-decorator / app.py
christinac's picture
Update app.py
75d7b88
import os
import shutil
import torch
import gradio as gr
MY_SECRET_TOKEN=os.environ.get('HF_TOKEN_SD')
from PIL import Image,ImageFont,ImageDraw
from gradio.mix import Series
#from io import BytesIO
from diffusers import StableDiffusionImg2ImgPipeline
YOUR_TOKEN=MY_SECRET_TOKEN
device="cuda" if torch.cuda.is_available() else "cpu"
pipe = StableDiffusionImg2ImgPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_auth_token=YOUR_TOKEN)
pipe.to(device)
#draw an image based off of user's text input
def drawImage(text, text_size, prompt, strength, guidance_scale): #(text, text_size, font)
out = Image.new("RGB", (512, 512), (0, 0, 0))
#add some code here to move font to font-directory
font = './font-directory/DimpleSans-Regular.otf'
fnt = ImageFont.truetype(font, int(text_size))
d = ImageDraw.Draw(out)
d.multiline_text((16, 64), text, font=fnt, fill=(255, 255, 255))
#init_image = out
out.save('initImage.png')
images = []
images = pipe(prompt=prompt, image=out, strength=strength, guidance_scale=guidance_scale).images
#images[0].save = ("image.png")
#images = []
#images.append(out)
#out.show()
return images[0]
#def newImage(image, prompt):
#return images test
#drawImage = gr.Interface(fn=drawImage, inputs=gr.Textbox(placeholder="shift + enter for new line",label="what do you want to say?"),outputs="image")
#newImage = gr.Interface(fn=newImage,inputs=[gr.Textbox(placeholder="prompt",label="how does your message look and feel?")],outputs="image")
#demo = gr.Series(drawImage,newImage)
#blocks = gr.Blocks()
demo = gr.Interface(
title="Text Decorator",
description="Note: This will be very slow since it is running on CPU.",
#description="Save or screenshot your creations and share on https://forms.gle/qhzc7nfX7VGwBco96 ⚡️ (Note: I've upgraded the hardware today from 7-9pm so that it runs faster, if you visit this link in the future, it will be slower.)",
##theme='huggingface',
#css="""
#body {font-family: system-ui, Helvetica, Arial, sans-serif}
#""",
fn=drawImage,
inputs=[
gr.Textbox(placeholder="shift + enter for new line",label="what do you want to say?"),
##"file"
gr.Number(label="text size",value=240),
gr.Textbox(placeholder="eg. imagery, art style, materials, emotions",label="how does your message look and feel?"), #figure out models in series
gr.Slider(label="strength (how much noise will be added to the input image)",minimum=0, maximum=1, step=0.01, value=0.7),
gr.Slider(label="guidance scale (how much the image generation follows the prompt)",value=15, maximum=20),
],
outputs="image")
#with blocks (css=".gradio-container {background-color: red}") as demo:
#fn=drawImage,
#inputs=[
#gr.Textbox(placeholder="shift + enter for new line",label="what do you want to say?"),
##"file"
#gr.Number(label="text size",value=240),
#gr.Textbox(placeholder="eg. imagery, art style, materials, emotions",label="how does your message look and feel?"), #figure out models in series
#gr.Slider(label="strength (how much noise will be added to the input image)",minimum=0, maximum=1, step=0.01, value=0.7),
#gr.Slider(label="guidance scale (how much the image generation follows the prompt)",value=15, maximum=20),
#],
#outputs="image"
demo.launch()