initial: support lqip and responsive image rendering/resizing
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
{{/* Input: Params. Output: dict {"default": RESOURCE, "lqip": RESOURCE, "responsive": [RESOURCE, ...]} */}}
|
||||
|
||||
{{ $res := .img }}
|
||||
{{ $resizeOptions := .resizeoptions }}
|
||||
{{ $sizes := .responsivesizes }}
|
||||
|
||||
{{ $imageDict := partial "resizer/simple" . }}
|
||||
{{ $default := $imageDict.default }}
|
||||
{{ $name := replace (path.Base ($res.Permalink)) (path.Ext $res.Name) "" }}
|
||||
|
||||
{{/* Responsive img sizing from LQIP width to default width */}}
|
||||
{{ $startWidth := (default 100 $imageDict.lqip.Width) }}
|
||||
{{ $sizes := seq $startWidth 50 $imageDict.default.Width }}
|
||||
{{ $n := 5 }}
|
||||
{{ if gt $n (len $sizes) -}}
|
||||
{{ $n = len $sizes }}
|
||||
{{- end }}
|
||||
{{/* Partition the sizes */}}
|
||||
{{ $part := int (div (len $sizes) $n) }}
|
||||
{{ $wset := slice }}
|
||||
{{ range (seq 1 (sub $n 1)) -}}
|
||||
{{ $wset = append (index $sizes (mul $part .)) $wset }}
|
||||
{{- end }}
|
||||
{{ $wset = (uniq (append (int $imageDict.default.Width) $wset)) }}
|
||||
|
||||
{{/* Fill responsive slice: */}}
|
||||
{{ $responsive := slice }}
|
||||
{{ $break := false }}
|
||||
{{- range $wset -}}
|
||||
{{- $resized := $res.Resize (printf "%dx %s" . $resizeOptions) -}}
|
||||
{{- $resized := slice $resized | resources.Concat (printf "%s-%dx%s" $name . (path.Ext $default.Permalink)) -}}
|
||||
{{- $responsive = append $resized $responsive -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return merge (dict "responsive" $responsive) $imageDict -}}
|
||||
@@ -0,0 +1,26 @@
|
||||
{{/* Input: Params. Output: dict {"default": RESOURCE, "lqip": RESOURCE, "responsive": [RESOURCE, ...]} */}}
|
||||
|
||||
{{ $res := .img }}
|
||||
{{ $resizeOptions := .resizeoptions }}
|
||||
{{ $sizes := .responsivesizes }}
|
||||
|
||||
{{ $imageDict := partial "resizer/simple" . }}
|
||||
{{ $default := $imageDict.default }}
|
||||
{{ $name := replace (path.Base ($res.Permalink)) (path.Ext $res.Name) "" }}
|
||||
|
||||
{{/* Fill responsive slice. Abort loop with $break when size exceeded (needed due to templating restrictions). */}}
|
||||
{{ $responsive := slice }}
|
||||
{{ $break := false }}
|
||||
{{- range $sizes -}}
|
||||
{{ if not $break }}
|
||||
{{- $resized := $res.Resize (printf "%s %s" . $resizeOptions) -}}
|
||||
{{- $resized := slice $resized | resources.Concat (printf "%s-%s%s" $name . (path.Ext $default.Permalink)) -}}
|
||||
{{- $responsive = append $resized $responsive -}}
|
||||
|
||||
{{- if or (gt $resized.Width $default.Width) (gt $resized.Height $default.Height) -}}
|
||||
{{- $break = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return merge (dict "responsive" $responsive) $imageDict -}}
|
||||
@@ -0,0 +1,16 @@
|
||||
{{/* Input: Params. Output: dict {"default": RESOURCE, "lqip": RESOURCE} */}}
|
||||
|
||||
{{ $res := .img }}
|
||||
{{ $maxSize := .maxsize }}
|
||||
{{ $lqipSize := .lqipsize }}
|
||||
{{ $resizeOptions := .resizeoptions }}
|
||||
|
||||
{{ $name := replace (path.Base ($res.Permalink)) (path.Ext $res.Name) "" }}
|
||||
|
||||
{{/* Resize base images */}}
|
||||
{{ $lqip := $res.Resize (printf "%s %s" $lqipSize $resizeOptions ) }}
|
||||
{{ $lqip := slice $lqip | resources.Concat (printf "%s-%s%s" $name $lqipSize (path.Ext $lqip.Permalink)) }}
|
||||
{{ $default := $res.Resize (printf "%s %s" $maxSize $resizeOptions) }}
|
||||
{{ $default := slice $default | resources.Concat (printf "%s-%s%s" $name $maxSize (path.Ext $default.Permalink)) }}
|
||||
|
||||
{{ return dict "lqip" $lqip "default" $default }}
|
||||
Reference in New Issue
Block a user