summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/views/editor_helpers.py47
1 files changed, 26 insertions, 21 deletions
diff --git a/core/views/editor_helpers.py b/core/views/editor_helpers.py
index 2be9800..c00d6e5 100644
--- a/core/views/editor_helpers.py
+++ b/core/views/editor_helpers.py
@@ -106,13 +106,16 @@ def new_image_form(request, path):
"""Manages a form to upload new images
exif_dict = piexif.load(im.info["exif"])
- exif_dict = {"0th":zeroth_ifd, "Exif":exif_ifd, "GPS":gps_ifd}
+ exif_dict = {"0th":zeroth_ifd, "Exif":exif_ifd, "GPS":gps_ifd, ...more}
The "Exif.Image.NewSubfileType" tag (ID 41729) serves to identify
the type of image or subfile data contained in the image file
0: full resolution, 1: reduced resolution
"""
+ year = current_expo() # replace with year from photo exif if possible
+ THUMB_QUALITY = 70
+ IMAGE_QUALITY = 85
directory = get_dir(path)
print(f"new_image_form(): {directory=} {path=}")
@@ -122,6 +125,8 @@ def new_image_form(request, path):
form = NewWebImageForm(request.POST, request.FILES, directory=directory)
if form.is_valid():
# print(f"new_image_form(): form is valid ")
+ year = form.cleaned_data["year"]
+ descrip = form.cleaned_data["description"]
editor = form.cleaned_data["who_are_you"]
editor = git_string(editor)
title = form.cleaned_data["header"]
@@ -145,13 +150,11 @@ def new_image_form(request, path):
# int(f"new_image_form() After DUMP {exif=}")
except:
exif = None
- descrip = form.cleaned_data["description"]
if not descrip:
# date and time from exif data
descrip = f"{exif_dict['Exif'][36867].decode()} {exif_dict['Exif'][36880].decode()}"
else:
- exif = None
-
+ exif = None
width, height = i.size
# print(f"new_image_form(): {i.size=}")
@@ -165,23 +168,25 @@ def new_image_form(request, path):
print(f"new_image_form(): rescaled ")
tscale = max(width / THUMBNAIL_WIDTH, height / THUMBNAIL_HEIGHT)
- thumbnail = i.resize((int(width / tscale), int(height / tscale)), Image.LANCZOS)
- ib = io.BytesIO()
+ t = i.resize((int(width / tscale), int(height / tscale)), Image.LANCZOS)
+ t = t.convert('RGB')
i = i.convert('RGB')
-
- exif_dict = piexif.load(i.info["exif"])
- exif_dict['GPS'] = gps_data # saved from before
- exif_bytes = piexif.dump(exif_dict)
- ib = io.BytesIO()
- i.save(ib, format='JPEG', quality = 85, exif=exif_bytes)
-
+ ib = io.BytesIO()
tb = io.BytesIO()
- thumbnail = thumbnail.convert('RGB')
- exif_dict = piexif.load(thumbnail.info["exif"])
- exif_dict['GPS'] = gps_data # saved from before
- exif_bytes = piexif.dump(exif_dict)
- thumbnail.save(tb, format='JPEG', quality = 70, exif=exif_bytes)
-
+ if "exif" in i.info:
+ exif_dict = piexif.load(i.info["exif"])
+ exif_dict['GPS'] = gps_data # saved from before
+ exif_bytes = piexif.dump(exif_dict)
+ i.save(ib, format='JPEG', quality = IMAGE_QUALITY, exif=exif_bytes)
+
+ exif_dict = piexif.load(t.info["exif"])
+ exif_dict['GPS'] = gps_data # saved from before
+ exif_bytes = piexif.dump(exif_dict)
+ t.save(tb, format='JPEG', quality = THUMB_QUALITY, exif=exif_bytes)
+
+ i.save(ib, format='JPEG', quality = IMAGE_QUALITY)
+ t.save(tb, format='JPEG', quality = THUMB_QUALITY)
+
image_rel_path, thumb_rel_path, desc_rel_path = form.get_rel_paths()
print(f"new_image_form(): \n {image_rel_path=}\n {thumb_rel_path=}\n {desc_rel_path=}")
image_page_template = loader.get_template("image_page_template.html")
@@ -190,7 +195,7 @@ def new_image_form(request, path):
"header": title,
"description": descrip,
"photographer": form.cleaned_data["photographer"],
- "year": form.cleaned_data["year"],
+ "year": year,
"filepath": f"/{image_rel_path}",
}
)
@@ -227,7 +232,7 @@ def new_image_form(request, path):
else:
# print(f"new_image_form(): not POST ")
initial={"who_are_you":editor,
- "year": current_expo(), "photographer": extract_git_name(editor),
+ "year": year, "photographer": extract_git_name(editor),
"change_message": "Uploading photo"}
form = NewWebImageForm(directory=directory, initial=initial )
# print(f"new_image_form(): POST and not POST ")