File size: 1,236 Bytes
9ed1ba5
 
 
565b8a7
9ed1ba5
4eb580b
9ed1ba5
 
 
 
111d4b8
9ed1ba5
 
e38864b
 
 
 
111d4b8
9ed1ba5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import io
import base64
from diffusers import StableDiffusionPipeline, EulerAncestralDiscreteScheduler, StableDiffusionXLPipeline
import torch
import peft
from flask import Flask, render_template, request, url_for

app = Flask(__name__)

model_id = "runwayml/stable-diffusion-v1-5"
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

#pipe = StableDiffusionPipeline.from_pretrained(model_id)
#pipe = pipe.to(device)
#pipe.enable_attention_slicing()

pipe = StableDiffusionPipeline.from_pretrained(model_id)

@app.route('/', methods=['GET', 'POST'])
def generate_image():
    if request.method == 'POST':
        prompt = request.form['prompt']

        try:
            image = pipe(prompt=prompt).images[0]

            buffered = io.BytesIO()
            image.save(buffered, format="PNG")
            image_base64 = base64.b64encode(buffered.getvalue()).decode('utf-8')
            image_data_uri = f"data:image/png;base64,{image_base64}"

            return render_template('index.html', image_url=image_data_uri)

        except Exception as e:
            return render_template('index.html', error=str(e))

    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)