image: add xlarge (4096px) on-demand preview tier

New `PhotoSize::XLarge` variant sits between `Large` (2048px) and
`Full` (original). On-demand generated and disk-cached at
`_xlarge/<hash>.jpg`, same waterfall as `Large` (embedded RAW preview
→ ffmpeg → image crate). Sources below 4096px serve at native size.

Reduces decoded bitmap memory from ~192MB (48MP full) to ~64MB for
the mobile viewer's zoom tier.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-25 15:33:03 -04:00
parent 9dba659d1e
commit b9175e2718
4 changed files with 196 additions and 10 deletions
+1
View File
@@ -194,6 +194,7 @@ pub enum MediaType {
#[serde(rename_all = "lowercase")]
pub enum PhotoSize {
Full,
XLarge,
Large,
Thumb,
}