From 77a88c093d761f182ec9261a20ea11b25721c33d Mon Sep 17 00:00:00 2001 From: moosecrap Date: Thu, 23 Jul 2026 00:58:54 -0700 Subject: [PATCH] Exif rotation, description update --- tools/__init__.py | 4 ++-- tools/contact_sheet.py | 4 +++- tools/preview_image.py | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/__init__.py b/tools/__init__.py index 79005cb..ad50777 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -26,7 +26,7 @@ from .preview_image import handle as preview_image_handler TOOL_REGISTRY = [ Tool( name="read_image", - description="Reads an image from the disk and returns it as a full size image content object.", + description="Reads an image from the disk and returns it as a full size image.", schema={ "type": "object", "properties": {"path": {"type": "string", "description": "Path to the image file"}}, @@ -75,7 +75,7 @@ TOOL_REGISTRY = [ ), Tool( name="preview_image", - description="Generates small thumbnails (~70 tokens) and detailed info for images. Can take file paths, or indices/ranges from a contact sheet.", + description="Generates small thumbnails and provides detailed info for images. Can take file paths, or indices/ranges from a contact sheet.", schema={ "type": "object", "properties": { diff --git a/tools/contact_sheet.py b/tools/contact_sheet.py index f5fe885..c1dda96 100644 --- a/tools/contact_sheet.py +++ b/tools/contact_sheet.py @@ -4,7 +4,7 @@ import io import datetime from pathlib import Path from typing import Any, Dict, List -from PIL import Image, ImageDraw, ImageFont +from PIL import Image, ImageDraw, ImageFont, ImageOps from tools.utils import format_relative_time, ToolError, COMMON_FONTS, get_file_info_list, sort_file_list, get_paginated_list logger = logging.getLogger("MattCP") @@ -83,6 +83,8 @@ async def handle(args: Dict[str, Any]): try: with Image.open(full_path) as img: + # Apply EXIF orientation to fix sideways images + img = ImageOps.exif_transpose(img) img.thumbnail((thumb_size, thumb_size)) off_x = (thumb_size - img.width) // 2 off_y = (thumb_size - img.height) // 2 diff --git a/tools/preview_image.py b/tools/preview_image.py index 64404e2..283ad0c 100644 --- a/tools/preview_image.py +++ b/tools/preview_image.py @@ -5,7 +5,7 @@ import io import datetime from pathlib import Path from typing import Any, Dict, List, Tuple -from PIL import Image +from PIL import Image, ImageOps from tools.utils import format_relative_time, ToolError, get_file_info_list, sort_file_list logger = logging.getLogger("MattCP") @@ -115,6 +115,8 @@ async def handle(args: Dict[str, Any]): try: stats = file_path.stat() with Image.open(file_path) as img: + # Apply EXIF orientation to fix sideways images + img = ImageOps.exif_transpose(img) orig_w, orig_h = img.size target_w, target_h = calculate_patch_dimensions(orig_w, orig_h)