-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.py
103 lines (79 loc) · 3.16 KB
/
server.py
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import PIL
import os
from flask import Flask, request, send_file
from flask_cors import CORS, cross_origin
#from style import generate_img
from Mask import clip_image
from Fill import fill_mask
import json
from partie1.Modele import Modele
app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
# créer un modèle
model = Modele()
@app.route('/upload', methods=['POST'])
@cross_origin()
def upload():
# vide les listes
resultats = {"ok" : [], "retoucher" : [], "exclure" : []}
files = request.files
print(files)
for file in files.values():
print(f"Received file {file.filename}")
# convertie l'image en un objet PIL.Image
file_image = PIL.Image.open(file)
resultat = model.processImage(file_image)
print(resultat)
if resultat == "ok":
resultats["ok"].append(file.filename)
elif resultat == "retoucher":
resultats["retoucher"].append(file.filename)
elif resultat == "exclure":
resultats["exclure"].append(file.filename)
return json.dumps(resultats)
@app.route('/retouche', methods=['POST'])
@cross_origin()
def retouches():
# On commence par supprimer les fichiers précédents dans le dossier output
for file in os.listdir('output'):
os.remove(os.path.join('output', file))
# On recupere un fichier image, le prompt de ce que l'on veut modifier et le prompt de ce que l'on veut ajouter
print("File")
file = request.files['jpg']
print("prompt1")
prompt = request.form['prompt']
print("prompt2")
prompt2 = request.form['prompt2']
print(f"Received file {file.filename}")
# convertie l'image en un objet PIL.Image
file_image = PIL.Image.open(file)
clip_image(file.filename, prompt)
# recupere le fichier image generer par clip
clip_image_name = 'output/output_{}.png'.format(prompt.replace(' ', '_'))
# On appelle la fonction fill_mask qui va remplacer les zone délimété par le prompt par le prompt2
fill_mask(file.filename, clip_image_name, prompt2)
# On renvoie le fichier image retouché
return send_file("output/result.png", mimetype='image/png')
"""@app.route('/style', methods=['POST'])
@cross_origin()
def style():
# On commence par supprimer les fichiers précédents dans le dossier output
for file in os.listdir('output'):
os.remove(os.path.join('output', file))
# On recupere un fichier image et le nom du style que l'on veut appliquer
file = request.files[0]
style_name = request.form['prompt']
# recupere le fichier style qui porte le nom de la variable style_name et qui est dans la liste des fichier du dossier style
for file_style in os.listdir('style'):
if file_style == style_name+".png":
style = file_style
print(f"Received file {file.filename}")
# convertie l'image en un objet PIL.Image
file_image = PIL.Image.open(file)
generate_img(file_image, style, "output/stylized_"+file.filename+".png")
# On renvoie le fichier image stylisé
return send_file("output/stylized_"+file.filename+".png", mimetype='image/png')
"""
if __name__ == '__main__':
app.run(port=5000)