forked from Sync/hugo-theme-stack
feat: add file types whitelist for image processing (#885)
Add `allowedTypes` and `resizableTypes` to `imageProcessing` configuration Prior to this commit, SVG images were not processed by `render-image.html` because SVG does not have a physical dimension like JPEG. This logic was done using a conditional. I have now realised that Hugo can be very slow when resizing `gif` images. So I created this whitelist mechanism: - `allowedTypes`: image types with width and height attributes - `resizableTypes`: image types that can be resized Here's a list of media types: bmp, gif, jpeg, png, svg+xml, tiff, webp https://gohugo.io/templates/output-formats/#media-types
This commit is contained in:
parent
d941e22120
commit
8dc2880a9c
@ -146,6 +146,15 @@ colorScheme:
|
||||
default: auto
|
||||
|
||||
imageProcessing:
|
||||
allowedTypes:
|
||||
- jpeg
|
||||
- png
|
||||
- gif
|
||||
- webp
|
||||
resizableTypes:
|
||||
- jpeg
|
||||
- png
|
||||
- webp
|
||||
cover:
|
||||
enabled: true
|
||||
content:
|
||||
|
@ -4,20 +4,24 @@
|
||||
{{- $Width := 0 -}}
|
||||
{{- $Height := 0 -}}
|
||||
{{- $Srcset := "" -}}
|
||||
|
||||
{{/* SVG and external images won't work with gallery layout, because their width and height attributes are unknown */}}
|
||||
{{- $imageProcessing := .Page.Site.Params.imageProcessing.content.enabled -}}
|
||||
{{- $allowedTypes := .Page.Site.Params.ImageProcessing.AllowedTypes -}}
|
||||
{{- $resizableTypes := .Page.Site.Params.ImageProcessing.ResizableTypes -}}
|
||||
{{- $galleryImage := false -}}
|
||||
|
||||
{{- if $image -}}
|
||||
{{- $notSVG := ne (path.Ext .Destination) ".svg" -}}
|
||||
{{- $type := $image.MediaType.SubType -}}
|
||||
{{- $allowed := in $allowedTypes $type -}}
|
||||
{{- $resizable := in $resizableTypes $type -}}
|
||||
{{- $imageProcessing := and $imageProcessing $resizable -}}
|
||||
{{- $Permalink = $image.RelPermalink -}}
|
||||
|
||||
{{- if $notSVG -}}
|
||||
{{- if $allowed -}}
|
||||
{{- $Width = $image.Width -}}
|
||||
{{- $Height = $image.Height -}}
|
||||
{{- $galleryImage = true -}}
|
||||
|
||||
{{- if .Page.Site.Params.imageProcessing.content.enabled -}}
|
||||
{{- if $imageProcessing -}}
|
||||
{{- $small := $image.Resize `480x` -}}
|
||||
{{- $big := $image.Resize `1024x` -}}
|
||||
{{- $Srcset = printf `%s 480w, %s 1024w` $small.RelPermalink $big.RelPermalink -}}
|
||||
|
Loading…
Reference in New Issue
Block a user