Skip to content

Instantly share code, notes, and snippets.

@Shatoidil
Created March 13, 2019 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shatoidil/22a4d5d8513526534c03db99ec6a9b3a to your computer and use it in GitHub Desktop.
Save Shatoidil/22a4d5d8513526534c03db99ec6a9b3a to your computer and use it in GitHub Desktop.
Flask and Pillow
from flask import Flask, render_template, request, send_file, json
from blanksts import *
from nocache import nocache
application = Flask(__name__)
@application.route("/")
def index():
application.config["CACHE_TYPE"] = "null"
return render_template('index.html')
@application.route('/result',methods = ['POST', 'GET'])
def result():
if request.method == 'POST':
if request.form.get("serial_number") != "":
set_serial_number(request.form.get("serial_number"))
save_image()
path = "sts_new.png"
return send_file(path, as_attachment=True)
@application.after_request
def add_header(response):
"""
Add headers to both force latest IE rendering engine or Chrome Frame,
and also to cache the rendered page for 10 minutes.
"""
response.headers['X-UA-Compatible'] = 'IE=Edge,chrome=1'
response.headers['Cache-Control'] = 'public, max-age=0'
return response
if __name__ == "__main__":
application.run(host='0.0.0.0')
from PIL import Image, ImageDraw, ImageFont
image = Image.open('sts.png').convert("RGBA")
size = 1413, 1000
txt = Image.new('RGBA', size, (255,255,255,0))
draw = ImageDraw.Draw(txt)
font_vin = ImageFont.truetype("./fonts/arial.ttf", size=35)
font_reg = ImageFont.truetype("./fonts/Arial-BoldMT.ttf", size=35)
font_marka_with_marka_eng = ImageFont.truetype("./fonts/arial.ttf", size=26)
font_marka = ImageFont.truetype("./fonts/arial.ttf", size=30)
def set_serial_number(serial_number):
(x, y) = (900, 50)
message = serial_number
font_serial = ImageFont.truetype('2057.ttf', size=43)
draw.text((x, y), message, fill=(200, 0, 0, 255), font=font_serial)
def save_image():
combined = Image.alpha_composite(image, txt)
combined.save('sts_new.png')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>СТС</title>
<!-- Bootstrap core CSS -->
<link href="./static/css/bootstrap.min.css" rel="stylesheet">
</head>
<body id="page-top">
<!-- Contact Section -->
<h2 class="text-center text-uppercase text-secondary mb-0">СТС</h2>
<hr class="star-dark mb-5">
<div class="row p-2" style="margin-left: 15px; margin-right: 15px;">
<div class="col-lg-6">
<!-- To configure the contact form email address, go to mail/contact_me.php and update the email address in the PHP file on line 19. -->
<!-- The form should work on most web servers, but if the form is not working you may need to configure your web server differently. -->
<form action="http://localhost:5000/result" method="POST">
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2 col-12">
<label>Серия и номер СТС</label>
<input class="form-control text-uppercase" name="serial_number" type="text" required="required"
data-validation-required-message="Please enter your name." autocomplete="off">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2 col-12">
<label>Рег.номер</label>
<input class="form-control text-uppercase" name="reg_number" type="text" required="required"
data-validation-required-message="Please enter your name." autocomplete="off">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2 col-12">
<label>VIN</label>
<input class="form-control text-uppercase" name="vin" type="text" required="required"
data-validation-required-message="Please enter your name." autocomplete="off">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="form-row m-2">
<div class="control-group col-4">
<div class="form-group floating-label-form-group controls mb-0 pb-2 ">
<label>Марка, модель</label>
<input class="form-control text-uppercase" name="marka" type="text"
data-validation-required-message="Please enter your name." autocomplete="off">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group col-4">
<div class="form-group floating-label-form-group controls mb-0 pb-2 ">
<label>Марка, модель (eng)</label>
<input class="form-control text-uppercase" name="marka_eng" type="text"
data-validation-required-message="Please enter your name." autocomplete="off">
<p class="help-block text-danger"></p>
</div>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-xl" id="sendMessageButton">Создать бланк</button>
</div>
</form>
</div>
<div class="col-lg-6">
<img id="img_sts" src="./static/sts.png" class="img-fluid" alt="Responsive image">
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<!-- Contact Form JavaScript -->
<script src="js/jqBootstrapValidation.js"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment