# This is a flask application that overlaps uploaded images and text on top of images laid out in a grid on the browser. from flask import Flask from flask import request, redirect from flask import render_template import glob import os from shutil import copyfile from datetime import datetime UPLOAD_FOLDER = os.path.join("static", "img") ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS # create flask application app = Flask(__name__) # configure the upload folder app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # load the settings of the applicaiton # (to handle the routing correctly) app.config.from_pyfile('settings.py') @app.route("/") def overlap(): images = glob.glob('./static/img/*.png') images.sort() print(images) return render_template("mosaic.html", images=images) from flask import request @app.route('/upload/', methods=['POST']) def upload_file(): if request.method == 'POST': file = request.files['tile'] if file and allowed_file(file.filename): filename, fileextension = os.path.splitext(file.filename) overwrite = request.form["overwrite"] input_file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename + fileextension) overwritten_file_path = os.path.join(app.config['UPLOAD_FOLDER'], overwrite + ".png") print("[input file path]:", input_file_path) print("[overwritten file path]:", overwritten_file_path) if 'png' not in fileextension: print("--- convert uploaded image to png") cmd = f"convert { input_file_path } { overwritten_file_path }" os.system(cmd) file.save(overwritten_file_path) # print("==============================================================") # print(fileextension) # print(f"copy { UPLOAD_FOLDER + file.filename} { UPLOAD_FOLDER + overwrite + fileextension }") # os.system(f"copy { UPLOAD_FOLDER + file.filename} { UPLOAD_FOLDER + overwrite + fileextension }") # print(f"del { UPLOAD_FOLDER + file.filename }") # os.system(f"del { UPLOAD_FOLDER + file.filename }") return redirect("/breadcube/overlap/") # f = request.files['the_file'] # f.save('/var/www/uploads/uploaded_file.txt') #to refer backto zoomreplace.html @app.route('/image/static/img/') def zoomedimage(imgpath): print (imgpath) # list the files in imgpath[0:2], pass them to template images = glob.glob('./static/img/' + imgpath[0:2] + '/*.png') images.sort(reverse=True) print(images) return render_template("zoomreplace.html", image=imgpath, images=images) @app.route('/upload2/', methods=['POST']) def upload2_file(image): if request.method == 'POST': file = request.files['tile'] if file and allowed_file(file.filename): filename, fileextension = os.path.splitext(file.filename) overwrite = image #00.png input_file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename + fileextension) overwritten_file_path = os.path.join(app.config['UPLOAD_FOLDER'], overwrite) print("[input file path]:", input_file_path) print("[overwritten file path]:", overwritten_file_path) if 'png' not in fileextension: print("--- convert uploaded image to png") cmd = f"convert { input_file_path } { overwritten_file_path }" os.system(cmd) # save it in the main folder with the number as the name file.save(overwritten_file_path) # and save it in the folder with the date as the name number_folder = image[0:2] datething = str(datetime.now()).replace(":", "").replace(" ", "").replace("-", "").replace(".", "") print(datething) memory_file_path = os.path.join(app.config['UPLOAD_FOLDER'],number_folder, datething + ".png") print(memory_file_path) # tempfile.save(memory_file_path) copyfile(overwritten_file_path, memory_file_path) return redirect("/")