"testing"
"time"
+ "github.com/gohugoio/hugo/resources/images/webp"
+
"github.com/gohugoio/hugo/common/paths"
"github.com/spf13/afero"
return true
}
+// Issue #8729
+func TestImageOperationsGoldenWebp(t *testing.T) {
+ if !webp.Supports() {
+ t.Skip("skip webp test")
+ }
+ c := qt.New(t)
+ c.Parallel()
+
+ devMode := false
+
+ testImages := []string{"fuzzy-cirlcle.png"}
+
+ spec, workDir := newTestResourceOsFs(c)
+ defer func() {
+ if !devMode {
+ os.Remove(workDir)
+ }
+ }()
+
+ if devMode {
+ fmt.Println(workDir)
+ }
+
+ for _, imageName := range testImages {
+ image := fetchImageForSpec(spec, c, imageName)
+ imageWebp, err := image.Resize("200x webp")
+ c.Assert(err, qt.IsNil)
+ c.Assert(imageWebp.Width(), qt.Equals, 200)
+ }
+
+ if devMode {
+ return
+ }
+
+ dir1 := filepath.Join(workDir, "resources/_gen/images")
+ dir2 := filepath.FromSlash("testdata/golden_webp")
+
+ assetGoldenDirs(c, dir1, dir2)
+
+}
+
func TestImageOperationsGolden(t *testing.T) {
c := qt.New(t)
c.Parallel()
dir1 := filepath.Join(workDir, "resources/_gen/images")
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 := ioutil.ReadDir(dir1)
c.Assert(err, qt.IsNil)
"gohugoio8_hu7f72c00afdf7634587afaa5eff2a25b2_73538_300x200_fill_gaussian_smart1_2.png":
c.Log("expectedly differs from golden due to dithering:", fi1.Name())
default:
- t.Errorf("resulting image differs from golden: %s", fi1.Name())
+ c.Errorf("resulting image differs from golden: %s", fi1.Name())
}
}
"fmt"
"image"
"image/color"
+ "image/draw"
"image/gif"
"image/jpeg"
"image/png"
func (p *ImageProcessor) Filter(src image.Image, filters ...gift.Filter) (image.Image, error) {
g := gift.New(filters...)
- dst := image.NewRGBA(g.Bounds(src.Bounds()))
+ bounds := g.Bounds(src.Bounds())
+ var dst draw.Image
+ switch src.(type) {
+ case *image.RGBA:
+ dst = image.NewRGBA(bounds)
+ case *image.NRGBA:
+ dst = image.NewNRGBA(bounds)
+ case *image.Gray:
+ dst = image.NewGray(bounds)
+ default:
+ dst = image.NewNRGBA(bounds)
+ }
g.Draw(dst, src)
return dst, nil
}