[utils] picture creator
This commit is contained in:
parent
b98bae337d
commit
eb1e146da9
|
@ -0,0 +1,38 @@
|
||||||
|
import os, sys
|
||||||
|
from PIL import Image
|
||||||
|
from flask import Response
|
||||||
|
from werkzeug.exceptions import BadRequest
|
||||||
|
|
||||||
|
thumbnail_sizes = ((32, 32), (64, 64), (128, 128), (256, 256), (512, 512))
|
||||||
|
|
||||||
|
|
||||||
|
def save_picture(picture, path):
|
||||||
|
|
||||||
|
if not picture.mimetype.startswith("image/"):
|
||||||
|
raise BadRequest
|
||||||
|
os.makedirs(path, exist_ok=True)
|
||||||
|
file_type = picture.mimetype.replace("image/", "")
|
||||||
|
filename = f"{path}/drink"
|
||||||
|
with open(f"{filename}.{file_type}", "wb") as file:
|
||||||
|
file.write(picture.binary)
|
||||||
|
image = Image.open(f"{filename}.{file_type}")
|
||||||
|
if file_type != "png":
|
||||||
|
image.save(f"{filename}.png", "PNG")
|
||||||
|
os.remove(f"{filename}.{file_type}")
|
||||||
|
image.show()
|
||||||
|
for thumbnail_size in thumbnail_sizes:
|
||||||
|
work_image = image.copy()
|
||||||
|
work_image.thumbnail(thumbnail_size)
|
||||||
|
work_image.save(f"{filename}-{thumbnail_size[0]}.png", "PNG")
|
||||||
|
|
||||||
|
|
||||||
|
def get_picture(path, size=None):
|
||||||
|
if size:
|
||||||
|
with open(f"{path}/drink-{size}.png", "rb") as file:
|
||||||
|
image = file.read()
|
||||||
|
else:
|
||||||
|
with open(f"{path}/drink.png", "rb") as file:
|
||||||
|
image = file.read()
|
||||||
|
response = Response(image, mimetype="image/png")
|
||||||
|
response.add_etag()
|
||||||
|
return response
|
Loading…
Reference in New Issue