testFlask / app.py
luis-blash
feat: unit image
d6cee87
raw
history blame contribute delete
No virus
3.26 kB
from flask import Flask, jsonify, request
from typing import Union
from PIL import Image
import qrcode
# import spaces
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def handle_get_request():
app.logger.info("Handling GET request")
return 'Hello, World!'
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in {'png', 'jpg', 'jpeg', 'gif'}
def handle_post_request():
if 'file' not in request.files:
return jsonify({'error': 'No file part'})
file = request.files['file']
if file.filename == '':
return jsonify({'error': 'No selected file'})
return jsonify({'message': 'File uploaded successfully'})
@app.route('/', methods=['GET', 'POST'])
def handle_requests():
if request.method == 'GET':
return handle_get_request()
elif request.method == 'POST':
return handle_post_request()
def resize_for_condition_image(input_image: Image.Image, resolution: int):
input_image = input_image.convert("RGB")
W, H = input_image.size
k = float(resolution) / min(H, W)
H *= k
W *= k
H = int(round(H / 64.0)) * 64
W = int(round(W / 64.0)) * 64
img = input_image.resize((W, H), resample=Image.LANCZOS)
return img
# https://huggingface.co/docs/hub/spaces-gpus
# @spaces.GPU()
def inference(
qr_code_content: str,
prompt: str,
negative_prompt: str,
guidance_scale: float = 10.0,
controlnet_conditioning_scale: float = 2.0,
strength: float = 0.8,
seed: int = -1,
init_image: Union[Image.Image, None] = None,
qrcode_image: Union[Image.Image, None] = None,
use_qr_code_as_init_image = True,
sampler = "DPM++ Karras SDE",):
if prompt is None or prompt == "":
return "Prompt is required"
if qrcode_image is None and qr_code_content == "":
return "QR Code Image or QR Code Content is required"
if qr_code_content != "" or qrcode_image.size == (1, 1):
print("Generating QR Code from content")
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)
qr.add_data(qr_code_content)
qr.make(fit=True)
qrcode_image = qr.make_image(fill_color="black", back_color="white")
qrcode_image = resize_for_condition_image(qrcode_image, 768)
else:
print("Using QR Code Image")
qrcode_image = resize_for_condition_image(qrcode_image, 768)
init_image = qrcode_image
return init_image
def handle_post_request_test_file():
img = "https://cdn2.steamgriddb.com/icon/e22dd5dabde45eda5a1a67772c8e25dd/32/256x256.png"
qr = inference(
"https://www.inmersys.com/",
"Dog in spaces",
"ugly, disfigured, low quality, blurry, nsfw",
10.0,
2.0,
0.8,
-1,
img,
img,
True,
"DPM++ Karras SDE"
)
data = {
'img': img,
'qr': qr
}
return jsonify(data)
@app.route('/test', methods=['GET'])
def handle_get_request_test():
return handle_post_request_test_file()
if __name__ == '__main__':
app.run(debug=True)