55 lines
1.1 KiB
Python
Executable File
55 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from PIL import Image
|
|
from PIL import ImageDraw
|
|
from PIL import ImageFont
|
|
from io import BytesIO
|
|
|
|
from flask import Flask, send_file
|
|
|
|
app = Flask(__name__)
|
|
|
|
in_file = 'input.jpg'
|
|
|
|
|
|
def process():
|
|
img = Image.open(in_file)
|
|
|
|
img.thumbnail((500, 500), Image.ANTIALIAS)
|
|
|
|
margin = 30
|
|
font_size = 24
|
|
font_file = 'Verdana.ttf'
|
|
|
|
w0, h0 = img.size
|
|
w1, h1 = 2*margin + w0, 2*margin + h0 + 30
|
|
|
|
out_img = Image.new('RGB', size=(w1, h1), color=(255, 255, 255))
|
|
out_img.paste(img, (margin, margin + 30))
|
|
|
|
font = ImageFont.load_default().font
|
|
font = ImageFont.truetype(font_file, font_size)
|
|
|
|
draw = ImageDraw.Draw(out_img)
|
|
draw.text((margin, margin/2), 'me irl:', (0, 0, 0), font=font)
|
|
|
|
return out_img
|
|
|
|
|
|
def serve_pil_image(pil_img):
|
|
img_io = BytesIO()
|
|
pil_img.save(img_io, 'PNG')
|
|
img_io.seek(0)
|
|
return send_file(img_io, mimetype='image/png')
|
|
|
|
|
|
@app.route('/image.png')
|
|
def serve_image():
|
|
pil_img = process()
|
|
|
|
return serve_pil_image(pil_img)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# process()
|
|
app.run()
|