Aspect-preserved detail image with full-size download

Photo detail page previously showed a square crop of the source image. Now
generate an aspect-preserved medium JPEG (longest side 1600, quality 88)
and display that on the detail page instead. The original file is linked
from a click-through on the image and from a sidebar 'Full size' download
link.

Also skip regeneration of images/thumbs/medium when the destination is
already at least as new as the source, so a rebuild triggered by editing
one sidecar (or restarting the service) no longer redecodes and rescales
every photo.
This commit is contained in:
2026-07-02 01:53:23 +02:00
parent 7f7a51ceb5
commit d269c8b1b4
3 changed files with 117 additions and 12 deletions
+33 -4
View File
@@ -183,21 +183,32 @@ body {
.dlayout {
display: flex;
align-items: stretch;
border: 1px solid var(--line);
}
.dimg-wrap {
flex: 1;
aspect-ratio: 1;
min-width: 0;
overflow: hidden;
background: var(--bg1);
display: flex;
align-items: center;
justify-content: center;
}
.dimg-wrap a {
display: block;
max-width: 100%;
max-height: 85vh;
}
.dimg-wrap img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
max-width: 100%;
max-height: 85vh;
width: auto;
height: auto;
}
.dsidebar {
@@ -257,6 +268,24 @@ body {
letter-spacing: 0.06em;
}
.dfull {
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid var(--line);
}
.dfull a {
font-size: 13px;
font-family: monospace;
color: var(--aqua);
text-decoration: none;
letter-spacing: 0.04em;
}
.dfull a:hover {
color: var(--fg2);
}
/* ── Responsive ────────────────────────────────────────────── */
@media (max-width: 600px) {