-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQR-Code.py
More file actions
71 lines (56 loc) · 2.43 KB
/
Copy pathQR-Code.py
File metadata and controls
71 lines (56 loc) · 2.43 KB
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
62
63
64
65
66
67
68
69
70
71
from flask import Flask, render_template, request, send_file, url_for, jsonify
import segno
import os
from PIL import Image
import time
app = Flask(__name__)
app.secret_key = '123456'
app.config['UPLOAD_FOLDER'] = 'static/uploads'
def making_qr_with_logo(user_input, scale, quiet_zone, dark, data_dark, light, logo_path=None):
qr = segno.make_qr(user_input)
timestamp = int(time.time())
qr_file = f"static/images/{timestamp}_qrcode.png"
qr.save(qr_file, scale=scale, border=3, quiet_zone=f"{quiet_zone}", dark= f'{dark}', data_dark=f'{data_dark}', light= f'{light}')
if logo_path:
logo = Image.open(logo_path)
logo = logo.convert("RGBA")
qr_img = Image.open(qr_file).convert("RGBA")
qr_size = qr_img.size
logo_size = min(qr_size[0] // 5, qr_size[1] // 5)
logo = logo.resize((logo_size, logo_size), Image.Resampling.LANCZOS)
qr_img.paste(logo, (qr_size[0] // 2 - logo_size // 2, qr_size[1] // 2 - logo_size // 2), logo)
qr_img.save(qr_file)
return qr_file
@app.route('/')
def index():
return render_template('index.html')
@app.route('/qrcode', methods=['POST'])
def qrcode():
user_text_input = request.form.get('user_input')
scale = request.form.get('scale')
quiet_zone = request.form['quiet_zone']
dark = request.form['dark']
data_dark = request.form['data_dark']
light = request.form['light']
logo = request.files.get('logo')
logo_path = None
if logo:
logo_path = os.path.join(app.config['UPLOAD_FOLDER'], logo.filename)
logo.save(logo_path)
qr_file = making_qr_with_logo(user_text_input, scale, quiet_zone, dark, data_dark, light, logo_path)
if logo_path:
os.remove(logo_path)
return jsonify({'qr_file': url_for('static', filename=qr_file.split('static/')[-1]), 'user_text_input': user_text_input, 'scale': scale})
@app.route('/dl-qrcode', methods=['POST']) #download qr code
def dl_qrcode():
user_input = request.form['user_input']
scale = request.form['scale']
qr = segno.make_qr(user_input)
qr_file = f"static/images/{user_input[:2]}_qrcode.png"
qr.save(qr_file, scale=scale, border=3, quiet_zone="lightblue", data_dark= 'gray', light= 'lightblue')
return send_file(qr_file, mimetype='image/png', as_attachment=True, download_name='qrcode.png')
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html')
if __name__ == '__main__':
app.run(debug=True)