You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The session detail view renders captures from a generated "large" (2560px) thumbnail so that detection bounding boxes align with the displayed pixels (see the fix for portrait EXIF-rotated captures). This keeps the initial view fast and correct, but when a user zooms far into a capture, 2560px is noticeably softer than the original file (often 4000px or wider). We should load higher-resolution imagery on demand as the user zooms in.
Proposed behavior
The view starts with the large thumbnail, as it does today.
When the zoom level crosses a threshold (for example, when the effective on-screen resolution exceeds the thumbnail's native resolution), the original source image is fetched and swapped in underneath the existing zoom/pan transform, similar to how map tiles sharpen as you zoom.
The swap should be seamless: keep showing the thumbnail until the full image has loaded, then replace it without resetting the zoom or pan position.
Constraint: EXIF orientation must not regress bounding boxes
The original file can carry an EXIF Orientation tag. Browsers force-apply that rotation to cross-origin images, while detection coordinates are stored in the raw (unrotated) pixel space — this is exactly the bug that moving to thumbnails fixed. Swapping the source image in at high zoom would re-introduce misplaced boxes for those captures.
A simple guard: after the source image loads, compare its reported natural dimensions against the capture's stored width and height. If they are transposed (rotated orientation), skip the swap and stay on the thumbnail. A fuller solution would expose the orientation from the backend and transform the box coordinates to match.
Bandwidth is also worth considering: original files can be several megabytes each, so the swap should only happen on sustained zoom, not on every pinch.
Summary
The session detail view renders captures from a generated "large" (2560px) thumbnail so that detection bounding boxes align with the displayed pixels (see the fix for portrait EXIF-rotated captures). This keeps the initial view fast and correct, but when a user zooms far into a capture, 2560px is noticeably softer than the original file (often 4000px or wider). We should load higher-resolution imagery on demand as the user zooms in.
Proposed behavior
Constraint: EXIF orientation must not regress bounding boxes
The original file can carry an EXIF Orientation tag. Browsers force-apply that rotation to cross-origin images, while detection coordinates are stored in the raw (unrotated) pixel space — this is exactly the bug that moving to thumbnails fixed. Swapping the source image in at high zoom would re-introduce misplaced boxes for those captures.
A simple guard: after the source image loads, compare its reported natural dimensions against the capture's stored width and height. If they are transposed (rotated orientation), skip the swap and stay on the thumbnail. A fuller solution would expose the orientation from the backend and transform the box coordinates to match.
Notes