]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix images.AutoOrient regression
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 2 Aug 2024 07:37:00 +0000 (09:37 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 2 Aug 2024 08:36:06 +0000 (10:36 +0200)
Broken in v0.130.0. Added a integration test to avoid future breakage.

Fixes #12712

resources/images/auto_orient.go
resources/images/images_integration_test.go [new file with mode: 0644]
resources/testdata/exif/orientation6.jpg [new file with mode: 0644]

index ed86979e1cfec9878a7b64f9f03cba5754907376..a4a61976d21f02cac6518a6648e5ac45ebfb8277 100644 (file)
@@ -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 (file)
index 0000000..156de62
--- /dev/null
@@ -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 (file)
index 0000000..4e2c864
Binary files /dev/null and b/resources/testdata/exif/orientation6.jpg differ