diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-06-15 18:22:05 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-06-17 23:52:27 +0200 |
commit | 5af045ebab109d3e5501b8b6d9fd448840c96c9a (patch) | |
tree | 27326eff5c13eae8bbeb4da288e2fa2dac2b444c /resources/image.go | |
parent | 8eafe0845d66efd3cf442a8ed89a6da5c1d3117b (diff) |
resources/image: Fix fill with smartcrop sometimes returning 0 bytes images
Fixes #7955
Diffstat (limited to 'resources/image.go')
-rw-r--r-- | resources/image.go | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/resources/image.go b/resources/image.go index edf05639f..282f008ed 100644 --- a/resources/image.go +++ b/resources/image.go @@ -201,9 +201,26 @@ func (i *imageResource) Fill(spec string) (resource.Image, error) { return nil, err } - return i.doWithImageConfig(conf, func(src image.Image) (image.Image, error) { + img, err := i.doWithImageConfig(conf, func(src image.Image) (image.Image, error) { return i.Proc.ApplyFiltersFromConfig(src, conf) }) + + if err != nil { + return nil, err + } + + if conf.Anchor == 0 && img.Width() == 0 || img.Height() == 0 { + // See https://github.com/gohugoio/hugo/issues/7955 + // Smartcrop fails silently in some rare cases. + // Fall back to a center fill. + conf.Anchor = gift.CenterAnchor + conf.AnchorStr = "center" + return i.doWithImageConfig(conf, func(src image.Image) (image.Image, error) { + return i.Proc.ApplyFiltersFromConfig(src, conf) + }) + } + + return img, err } func (i *imageResource) Filter(filters ...interface{}) (resource.Image, error) { |