From 9e26f814e6286235c99b8c2cd56a23e91b9b49ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 26 Feb 2018 18:55:00 +0100 Subject: [PATCH] resource: Use Floyd-Steinberg dithering for PNGs Fixes #4453 --- resource/image.go | 4 ++-- resource/image_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resource/image.go b/resource/image.go index 2529413cc90..7dae99333d6 100644 --- a/resource/image.go +++ b/resource/image.go @@ -80,7 +80,7 @@ var ( // Add or increment if changes to an image format's processing requires // re-generation. imageFormatsVersions = map[imaging.Format]int{ - imaging.PNG: 1, // 1: Add proper palette handling + imaging.PNG: 2, // Floyd Steinberg dithering } // Increment to mark all processed images as stale. Only use when absolutely needed. @@ -266,7 +266,7 @@ func (i *Image) doWithImageConfig(action, spec string, f func(src image.Image, c // Apply the colour palette from the source if paletted, ok := src.(*image.Paletted); ok { tmp := image.NewPaletted(converted.Bounds(), paletted.Palette) - draw.Src.Draw(tmp, tmp.Bounds(), converted, converted.Bounds().Min) + draw.FloydSteinberg.Draw(tmp, tmp.Bounds(), converted, converted.Bounds().Min) converted = tmp } } diff --git a/resource/image_test.go b/resource/image_test.go index 03cd1726f28..7906f4fbca2 100644 --- a/resource/image_test.go +++ b/resource/image_test.go @@ -273,7 +273,7 @@ func TestImageResize8BitPNG(t *testing.T) { resized, err := image.Resize("800x") assert.NoError(err) assert.Equal(imaging.PNG, resized.format) - assert.Equal("/a/gohugoio_hu0e1b9e4a4be4d6f86c7b37b9ccce3fbc_73886_800x0_resize_linear_1.png", resized.RelPermalink()) + assert.Equal("/a/gohugoio_hu0e1b9e4a4be4d6f86c7b37b9ccce3fbc_73886_800x0_resize_linear_2.png", resized.RelPermalink()) assert.Equal(800, resized.Width()) }