Spaces:
Running
Running
File size: 1,617 Bytes
a650a4e bd1b5c0 a650a4e bd1b5c0 |
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 |
from flask import Flask, request, jsonify
import requests
import io
import random
import os
from PIL import Image
from pycloudflared import try_cloudflare
try_cloudflare(port=7860)
app = Flask(__name__)
API_URL = "https://api-inference.huggingface.co/models/openskyml/dalle-3-xl"
API_TOKEN = os.getenv("HF_READ_TOKEN") # it is free
headers = {"Authorization": f"Bearer {API_TOKEN}"}
def query(prompt, is_negative=False, steps=1, cfg_scale=6, seed=None):
payload = {
"inputs": prompt,
"is_negative": is_negative,
"steps": steps,
"cfg_scale": cfg_scale,
"seed": seed if seed is not None else random.randint(-1, 2147483647)
}
image_bytes = requests.post(API_URL, headers=headers, json=payload).content
image = Image.open(io.BytesIO(image_bytes))
return image
@app.route("/generate", methods=["POST"])
def generate():
try:
data = request.get_json()
prompt = data["prompt"]
negative_prompt = data.get("negative_prompt", "")
is_negative = True if negative_prompt else False
image = query(prompt, is_negative=is_negative)
# Convert PIL Image to bytes
img_byte_array = io.BytesIO()
image.save(img_byte_array, format='PNG')
img_byte_array = img_byte_array.getvalue()
response = {
"success": True,
"image": img_byte_array.decode('latin-1')
}
except Exception as e:
response = {
"success": False,
"error": str(e)
}
return jsonify(response)
if __name__ == "__main__":
app.run(port=7860) |