aboutsummaryrefslogtreecommitdiff
path: root/app/views/thumbnails.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/thumbnails.py')
-rw-r--r--app/views/thumbnails.py45
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)