Add images.Opacity filter

Fixes #11471
This commit is contained in:
Bjørn Erik Pedersen
2023-09-21 22:32:32 +02:00
parent 11fcda971c
commit f9b3c0f486
8 changed files with 76 additions and 14 deletions

View File

@@ -63,7 +63,7 @@ var eq = qt.CmpEquals(
}
return p1.Name() == p2.Name() && p1.Size() == p2.Size() && p1.IsDir() == p2.IsDir()
}),
//cmp.Comparer(func(p1, p2 *genericResource) bool { return p1 == p2 }),
// cmp.Comparer(func(p1, p2 *genericResource) bool { return p1 == p2 }),
cmp.Comparer(func(m1, m2 media.Type) bool {
return m1.Type == m2.Type
}),
@@ -162,7 +162,6 @@ func TestImageTransformBasic(t *testing.T) {
croppedAgain, err := image.Crop("300x300 topRight")
c.Assert(err, qt.IsNil)
c.Assert(cropped, qt.Equals, croppedAgain)
}
func TestImageTransformFormat(t *testing.T) {
@@ -267,7 +266,6 @@ func TestImageBugs(t *testing.T) {
c.Assert(resized, qt.Not(qt.IsNil))
c.Assert(resized.Width(), qt.Equals, 100)
c.Assert(resized.RelPermalink(), qt.Equals, "/a/_hu59e56ffff1bc1d8d122b1403d34e039f_90587_c876768085288f41211f768147ba2647.jpg")
})
// Issue #6137
@@ -278,7 +276,6 @@ func TestImageBugs(t *testing.T) {
c.Assert(err, qt.IsNil)
c.Assert(resized, qt.Not(qt.IsNil))
c.Assert(resized.Width(), qt.Equals, 200)
})
// Issue #7955
@@ -307,9 +304,7 @@ func TestImageBugs(t *testing.T) {
c.Assert(resized.Width(), qt.Equals, test.targetWH)
c.Assert(resized.Height(), qt.Equals, test.targetWH)
})
}
})
}
@@ -613,7 +608,6 @@ func TestImageOperationsGoldenWebp(t *testing.T) {
dir2 := filepath.FromSlash("testdata/golden_webp")
assetGoldenDirs(c, dir1, dir2)
}
func TestImageOperationsGolden(t *testing.T) {
@@ -621,7 +615,7 @@ func TestImageOperationsGolden(t *testing.T) {
c.Parallel()
// Note, if you're enabling this on a MacOS M1 (ARM) you need to run the test with GOARCH=amd64.
// GOARCH=amd64 go test -timeout 30s -run "^TestImageOperationsGolden$" ./resources -v
// GOARCH=amd64 go test -count 1 -timeout 30s -run "^TestImageOperationsGolden$" ./resources -v
// The above will print out a folder.
// Replace testdata/golden with resources/_gen/images in that folder.
devMode := false
@@ -644,6 +638,10 @@ func TestImageOperationsGolden(t *testing.T) {
gopher, err = gopher.Resize("30x")
c.Assert(err, qt.IsNil)
f := &images.Filters{}
sunset := fetchImageForSpec(spec, c, "sunset.jpg")
// Test PNGs with alpha channel.
for _, img := range []string{"gopher-hero8.png", "gradient-circle.png"} {
orig := fetchImageForSpec(spec, c, img)
@@ -653,7 +651,15 @@ func TestImageOperationsGolden(t *testing.T) {
rel := resized.RelPermalink()
c.Assert(rel, qt.Not(qt.Equals), "")
}
// Check the Opacity filter.
opacity30, err := orig.Filter(f.Opacity(30))
c.Assert(err, qt.IsNil)
overlay, err := sunset.Filter(f.Overlay(opacity30.(images.ImageSource), 20, 20))
rel := overlay.RelPermalink()
c.Assert(rel, qt.Not(qt.Equals), "")
}
// A simple Gif file (no animation).
@@ -699,8 +705,6 @@ func TestImageOperationsGolden(t *testing.T) {
c.Assert(rel, qt.Not(qt.Equals), "")
}
f := &images.Filters{}
filters := []gift.Filter{
f.Grayscale(),
f.GaussianBlur(6),
@@ -746,11 +750,9 @@ func TestImageOperationsGolden(t *testing.T) {
dir2 := filepath.FromSlash("testdata/golden")
assetGoldenDirs(c, dir1, dir2)
}
func assetGoldenDirs(c *qt.C, dir1, dir2 string) {
// The two dirs above should now be the same.
dirinfos1, err := os.ReadDir(dir1)
c.Assert(err, qt.IsNil)