roundabout,
created on Friday, 14 February 2025, 20:39:26 (1739565566),
received on Friday, 14 February 2025, 20:39:34 (1739565574)
Author identity: vlad <vlad.muntoiu@gmail.com>
1d77373c7b9a4620da42fd798fee4e3824c9ded1
app.py
@@ -4,6 +4,8 @@ import mimetypes
import flask import ruamel.yaml as yaml import sqlalchemy.dialects.postgresql from matplotlib.image import thumbnailimport config import markdown
@@ -542,6 +544,9 @@ def upload_post():
file.save(path.join(config.DATA_PATH, "pictures", str(resource.id))) pil_image = Image.open(path.join(config.DATA_PATH, "pictures", str(resource.id))) resource.width, resource.height = pil_image.size pil_image.thumbnail(config.THUMBNAIL_SIZE) pil_image = pil_image.convert("RGB") pil_image.save(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id)), **config.THUMBNAIL_SAVE_OPTIONS)db.session.commit() if flask.request.form.get("annotations"):
@@ -1310,6 +1315,25 @@ def raw_picture(id):
return response @app.route("/raw/picture-thumbnail/<int:id>") def raw_picture_thumbnail(id): resource = db.session.get(PictureResource, id) if resource is None: flask.abort(404) if not path.exists(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id))): pil_image = Image.open(path.join(config.DATA_PATH, "pictures", str(resource.id))) pil_image.thumbnail(config.THUMBNAIL_SIZE) pil_image = pil_image.convert("RGB") pil_image.save(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id)), **config.THUMBNAIL_SAVE_OPTIONS) response = flask.send_from_directory(path.join(config.DATA_PATH, "picture-thumbnails"), str(resource.id)) response.mimetype = resource.file_format return response @app.route("/object/") def graphical_object_types(): return flask.render_template("object-types.html", objects=PictureObject.query.all())
@@ -1585,6 +1609,9 @@ def api_upload():
file.save(path.join(config.DATA_PATH, "pictures", str(resource.id))) pil_image = Image.open(path.join(config.DATA_PATH, "pictures", str(resource.id))) resource.width, resource.height = pil_image.size pil_image.thumbnail(config.THUMBNAIL_SIZE) pil_image = pil_image.convert("RGB") pil_image.save(path.join(config.DATA_PATH, "picture-thumbnails", str(resource.id)), **config.THUMBNAIL_SAVE_OPTIONS)db.session.commit() if json_.get("annotations"):
config.py
@@ -8,3 +8,5 @@ DB_URI = f"postgresql://gigadata:{DB_PASSWORD}@localhost:5432/gigadata"
DATA_PATH = "./data" ROOT_URL = "http://localhost:8080" SITE_NAME = "Development site" THUMBNAIL_SAVE_OPTIONS = {"format": "JPEG", "quality": 90} THUMBNAIL_SIZE = (576, 576)
templates/small-annotation-display.html
@@ -1,6 +1,6 @@
{% macro annotation_display(resource) %} <div class="annotation-zone"> <img src="/raw/picture/{{ resource.id }}" alt="{{ resource.title }}"><img src="/raw/picture-thumbnail/{{ resource.id }}" alt="{{ resource.title }}">{% for region in resource.regions %} {% if region.json.type == "bbox" %} <svg class="shape-container" viewBox="0 0 1 1" preserveAspectRatio="none">