1
+ from flask import Flask , render_template , request , flash
2
+ from werkzeug .utils import secure_filename
3
+ from rembg import remove
4
+ import os
5
+ import cv2
6
+
7
+ UPLOAD_FOLDER = 'uploads'
8
+ ALLOWED_EXTENSIONS = {'png' , 'jpg' , 'jpeg' , 'gif' , 'webp' }
9
+
10
+ app = Flask (__name__ )
11
+ app .secret_key = 'super secret key'
12
+ app .config ['UPLOAD_FOLDER' ] = UPLOAD_FOLDER
13
+
14
+ def allowed_file (filename ):
15
+ return '.' in filename and \
16
+ filename .rsplit ('.' , 1 )[1 ].lower () in ALLOWED_EXTENSIONS
17
+
18
+ def processImage (filename , operation ):
19
+ print (f"the operation is { operation } and filename is { filename } " )
20
+ img = cv2 .imread (f"uploads/{ filename } " )
21
+ match operation :
22
+ case "cgrey" :
23
+ newFilename = f"static/{ filename } "
24
+ imgProcessed = cv2 .cvtColor (img , cv2 .COLOR_BGR2GRAY )
25
+ cv2 .imwrite (newFilename ,imgProcessed )
26
+ return newFilename
27
+ case "cwebp" :
28
+ newFilename = f"static/{ filename .split ('.' )[0 ]} .webp"
29
+ cv2 .imwrite (newFilename ,img )
30
+ return newFilename
31
+ case "cpng" :
32
+ newFilename = f"static/{ filename .split ('.' )[0 ]} .png"
33
+ cv2 .imwrite (newFilename ,img )
34
+ return newFilename
35
+ case "cjpg" :
36
+ newFilename = f"static/{ filename .split ('.' )[0 ]} .jpg"
37
+ cv2 .imwrite (newFilename ,img )
38
+ return newFilename
39
+ case "rembg" :
40
+ newFilename = f"static/{ filename } "
41
+ imgProcessed = remove (img )
42
+ cv2 .imwrite (newFilename ,imgProcessed )
43
+ return newFilename
44
+
45
+ pass
46
+
47
+ @app .route ("/" )
48
+ def home ():
49
+ return render_template ("index.html" )
50
+
51
+ @app .route ("/about" )
52
+ def about ():
53
+ return render_template ("about.html" )
54
+
55
+ @app .route ("/how" )
56
+ def how ():
57
+ return render_template ("how.html" )
58
+
59
+ @app .route ("/contact" )
60
+ def contact ():
61
+ return render_template ("contact.html" )
62
+
63
+ @app .route ("/edit" , methods = ["GET" ,"POST" ])
64
+ def edit ():
65
+ if request .method == "POST" :
66
+ operation = request .form .get ("operation" )
67
+ # check if the post request has the file part
68
+ if 'file' not in request .files :
69
+ flash ('No file part' )
70
+ return "error"
71
+ file = request .files ['file' ]
72
+ # If the user does not select a file, the browser submits an
73
+ # empty file without a filename.
74
+ if file .filename == '' :
75
+ flash ('No selected file' )
76
+ return "error - no selected file"
77
+ if file and allowed_file (file .filename ):
78
+ filename = secure_filename (file .filename )
79
+ file .save (os .path .join (app .config ['UPLOAD_FOLDER' ], filename ))
80
+ new = processImage (filename , operation )
81
+ flash (f"Your image has been processed and is available <a href='/{ new } ' target='_blank'>here</a>" )
82
+ return render_template ("index.html" )
83
+
84
+ return render_template ("index.html" )
85
+
86
+ app .run (debug = True , port = 5001 )
0 commit comments