50 lines
1.4 KiB
HTML
50 lines
1.4 KiB
HTML
{{/*
|
|
Renders a photo thumbnail. If neither a target height or target width are
|
|
given, and the image is already in the correct orientation, no image
|
|
processing is performed.
|
|
|
|
Arguments
|
|
---------
|
|
"Page" : A reference to the current Page
|
|
"Height" : The target height of the image
|
|
"Width" : The target width of the image
|
|
|
|
Returns
|
|
-------
|
|
The processed thumbnail image resource
|
|
*/}}
|
|
|
|
{{- $thumbnailResource := .Page.Resources.GetMatch
|
|
(index .Page.Params "thumbnail" | default "[tT]humbnail*")
|
|
| default (index (.Page.Resources.ByType "image") 0) -}}
|
|
|
|
{{- if not $thumbnailResource -}}
|
|
{{- errorf "No thumbnail available for %s" .Page.Permalink }}
|
|
{{- end -}}
|
|
|
|
{{ $orientation := partial "images/orientation_angle.html" $thumbnailResource }}
|
|
|
|
{{ $targetWidth := 0 }}
|
|
{{ with .Width }}
|
|
{{ $targetWidth = . }}
|
|
{{ else }}
|
|
{{ $targetWidth = $thumbnailResource.Width }}
|
|
{{ end }}
|
|
|
|
{{ $targetHeight := 0 }}
|
|
{{ with .Height }}
|
|
{{ $targetHeight = . }}
|
|
{{ else }}
|
|
{{ $targetHeight = $thumbnailResource.Height }}
|
|
{{ end }}
|
|
|
|
{{ $thumbnail := false }}
|
|
{{ if not (and (eq $orientation 0)
|
|
(eq $targetWidth $thumbnailResource.Width)
|
|
(eq $targetHeight $thumbnailResource.Height)) }}
|
|
{{ $thumbnail = $thumbnailResource.Fit (printf "%dx%d r%d" $targetWidth $targetHeight (sub 360 $orientation)) }}
|
|
{{ else }}
|
|
{{ $thumbnail = $thumbnailResource }}
|
|
{{ end }}
|
|
|
|
{{ return $thumbnail }}
|