diff --git a/resources/images/auto_orient.go b/resources/images/auto_orient.go index ed86979e1..a4a61976d 100644 --- a/resources/images/auto_orient.go +++ b/resources/images/auto_orient.go @@ -19,6 +19,7 @@ import ( "github.com/disintegration/gift" "github.com/gohugoio/hugo/resources/images/exif" + "github.com/spf13/cast" ) var _ gift.Filter = (*autoOrientFilter)(nil) @@ -49,7 +50,8 @@ func (f autoOrientFilter) Bounds(srcBounds image.Rectangle) image.Rectangle { func (f autoOrientFilter) AutoOrient(exifInfo *exif.ExifInfo) gift.Filter { if exifInfo != nil { - if orientation, ok := exifInfo.Tags["Orientation"].(int); ok { + if v, ok := exifInfo.Tags["Orientation"]; ok { + orientation := cast.ToInt(v) if filter, ok := transformationFilters[orientation]; ok { return filter } diff --git a/resources/images/images_integration_test.go b/resources/images/images_integration_test.go new file mode 100644 index 000000000..156de6259 --- /dev/null +++ b/resources/images/images_integration_test.go @@ -0,0 +1,36 @@ +// Copyright 2024 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package images_test + +import ( + "testing" + + "github.com/gohugoio/hugo/hugolib" +) + +func TestAutoOrient(t *testing.T) { + files := ` +-- hugo.toml -- +-- assets/rotate270.jpg -- +sourcefilename: ../testdata/exif/orientation6.jpg +-- layouts/index.html -- +{{ $img := resources.Get "rotate270.jpg" }} +W/H original: {{ $img.Width }}/{{ $img.Height }} +{{ $rotated := $img.Filter images.AutoOrient }} +W/H rotated: {{ $rotated.Width }}/{{ $rotated.Height }} +` + + b := hugolib.Test(t, files) + b.AssertFileContent("public/index.html", "W/H original: 80/40\n\nW/H rotated: 40/80") +} diff --git a/resources/testdata/exif/orientation6.jpg b/resources/testdata/exif/orientation6.jpg new file mode 100644 index 000000000..4e2c86415 Binary files /dev/null and b/resources/testdata/exif/orientation6.jpg differ