· 4 years ago · Jun 29, 2021, 01:02 PM
1import os
2from flask import Flask, request, redirect, url_for, render_template
3from werkzeug.utils import secure_filename
4from flask_wtf import FlaskForm, RecaptchaField
5from PIL import Image
6import numpy as np
7import matplotlib
8matplotlib.use('Agg')
9import matplotlib.pyplot as plt
10app = Flask(__name__)
11
12
13@app.route("/")
14def hello():
15 return " <html><head></head> <body> Enter </body></html>"
16
17
18from flask import render_template
19
20from flask_wtf import FlaskForm, RecaptchaField
21from wtforms import StringField, SubmitField, TextAreaField,IntegerField
22
23from wtforms.validators import DataRequired
24from flask_wtf.file import FileField, FileAllowed, FileRequired
25
26SECRET_KEY = 'secret'
27app.config['SECRET_KEY'] = SECRET_KEY
28
29app.config['RECAPTCHA_USE_SSL'] = False
30app.config["RECAPTCHA_PUBLIC_KEY"] = "6LdHWLkaAAAAAFJioRgnPe-YNl4xxUhNaLTkCZno"
31app.config["RECAPTCHA_PRIVATE_KEY"] = "6LdHWLkaAAAAANYhxdrrw7ujYb-3g4aZGOZcWcN8"
32app.config['RECAPTCHA_OPTIONS'] = {'theme': 'white'}
33
34from flask_bootstrap import Bootstrap
35
36bootstrap = Bootstrap(app)
37
38
39class NetForm(FlaskForm):
40 cho = IntegerField('Введите угол поворота', validators=[DataRequired()])
41
42 upload = FileField('Load image', validators=[
43 FileRequired(),
44 FileAllowed(['jpg', 'png', 'jpeg'], 'Images only!')])
45
46 upload2 = FileField('Load image', validators=[
47 FileRequired(),
48 FileAllowed(['jpg', 'png', 'jpeg'], 'Images only!')])
49 cho2 = IntegerField('Введите угол поворота 2', validators=[DataRequired()])
50 recaptcha = RecaptchaField()
51
52 submit = SubmitField('send')
53
54
55from werkzeug.utils import secure_filename
56import os
57
58import numpy as np
59from PIL import Image
60import seaborn as sns
61
62
63def watermark(img, mask):
64 x,y = mask.size
65 mask.putalpha(200)
66 mask = mask.convert("RGBA")
67 img.paste(mask, (0,0), mask)
68 img.save("./static/last.png")
69 return 'ok'
70
71def draw(filename, cho, fl2 , cho2):
72 img = Image.open(filename)
73 img = img.rotate(cho2)
74 img2=Image.open(fl2)
75 img2 = img2.rotate(cho)
76 output_filename = filename
77 img.save(filename)
78 img2.save(fl2)
79 img = img.convert("RGBA")
80 watermark(img, img2)
81 x, y = img.size
82 fig = plt.figure(figsize=(6, 4))
83 ax = fig.add_subplot()
84 data = np.random.randint(0, 255, (100, 100))
85 ax.imshow(img, cmap='plasma')
86 b = ax.pcolormesh(data, edgecolors='black', cmap='plasma')
87 fig.colorbar(b, ax=ax)
88 gr_path = "./static/newgr.png"
89 sns.displot(data)
90 plt.savefig(gr_path)
91 plt.close()
92 fig = plt.figure(figsize=(6, 4))
93 ax = fig.add_subplot()
94 data = np.random.randint(0, 255, (100, 100))
95 ax.imshow(img, cmap='plasma')
96 b = ax.pcolormesh(data, edgecolors='black', cmap='plasma')
97 fig.colorbar(b, ax=ax)
98 gr_path2 = "./static/newgr2.png"
99 sns.displot(data)
100 plt.savefig(gr_path2)
101 plt.close()
102 return output_filename, gr_path, gr_path2
103
104
105@app.route("/net", methods=['GET', 'POST'])
106def net():
107 global combine
108 form = NetForm()
109
110 filename = None
111 filename2 = None
112 newfilename = None
113 grname = None
114 grname2 = None
115 combine = None
116 rotate_path=None
117 if form.validate_on_submit():
118 filename = os.path.join('./static', secure_filename(form.upload.data.filename))
119 ch = form.cho.data
120 ch2 = form.cho2.data
121 filename2 = os.path.join('./static', secure_filename(form.upload2.data.filename))
122 form.upload.data.save(filename)
123 form.upload2.data.save(filename2)
124 newfilename, grname, grname2 = draw(filename, int(ch), filename2, ch2)
125 return render_template('net.html', form=form, fl2=filename2, image_name=newfilename, gr_name=grname, gr_name2=grname2)
126
127
128if __name__ == "__main__":
129 app.run(debug=True)