diff options
| author | rubenwardy <rw@rubenwardy.com> | 2018-05-29 16:19:17 +0100 |
|---|---|---|
| committer | rubenwardy <rw@rubenwardy.com> | 2018-05-29 16:19:17 +0100 |
| commit | 6a13dca2d511bd790e718be34f8a66bfc4cb525e (patch) | |
| tree | 7b9fb5b55319c496b21c5ab0f6757cf8dea142bc /app/views/thumbnails.py | |
| parent | 048b604a75e6a62cbc257e7c1f2b783e88ba871f (diff) | |
| download | cheatdb-6a13dca2d511bd790e718be34f8a66bfc4cb525e.tar.xz | |
Add thumbnail support
Diffstat (limited to 'app/views/thumbnails.py')
| -rw-r--r-- | app/views/thumbnails.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/app/views/thumbnails.py b/app/views/thumbnails.py new file mode 100644 index 0000000..d33e74c --- /dev/null +++ b/app/views/thumbnails.py @@ -0,0 +1,45 @@ +# Content DB +# Copyright (C) 2018 rubenwardy +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + + +from flask import * +from app import app + +import glob, os +from PIL import Image + +ALLOWED_RESOLUTIONS=[(332,221)] + +def mkdir(path): + if not os.path.isdir(path): + os.mkdir(path) + +@app.route("/thumbnails/<img>") +@app.route("/thumbnails/<int:w>x<int:h>/<img>") +def make_thumbnail(img, w=332, h=221): + if not (w, h) in ALLOWED_RESOLUTIONS: + abort(403) + + mkdir("app/public/thumbnails/") + mkdir("app/public/thumbnails/332x221/") + + cache_filepath = "public/thumbnails/{}x{}/{}".format(w, h, img) + source_filepath = "public/uploads/" + img + + im = Image.open("app/" + source_filepath) + im.thumbnail((w, h), Image.ANTIALIAS) + im.save("app/" + cache_filepath, optimize=True) + return send_file(cache_filepath) |
