Fix wrong color with RGBA input

This commit is contained in:
minodisk 2015-05-25 18:18:32 +09:00
parent f2d1b73023
commit f430a41192
2 changed files with 5 additions and 5 deletions

View File

@ -131,11 +131,11 @@ func resizeRGBA(in *image.RGBA, out *image.NRGBA, scale float64, coeffs []int16,
// reverse alpha-premultiplication. // reverse alpha-premultiplication.
if a != 0 { if a != 0 {
r *= 0xffff r *= 0xff
r /= a r /= a
g *= 0xffff g *= 0xff
g /= a g /= a
b *= 0xffff b *= 0xff
b /= a b /= a
} }

View File

@ -46,7 +46,7 @@ func Test_CorrectResize(t *testing.T) {
} }
} }
func Test_SameColor(t *testing.T) { func Test_SameColorWithRGBA(t *testing.T) {
img := image.NewRGBA(image.Rect(0, 0, 20, 20)) img := image.NewRGBA(image.Rect(0, 0, 20, 20))
for y := img.Bounds().Min.Y; y < img.Bounds().Max.Y; y++ { for y := img.Bounds().Min.Y; y < img.Bounds().Max.Y; y++ {
for x := img.Bounds().Min.X; x < img.Bounds().Max.X; x++ { for x := img.Bounds().Min.X; x < img.Bounds().Max.X; x++ {
@ -56,7 +56,7 @@ func Test_SameColor(t *testing.T) {
out := Resize(10, 10, img, Lanczos3) out := Resize(10, 10, img, Lanczos3)
for y := out.Bounds().Min.Y; y < out.Bounds().Max.Y; y++ { for y := out.Bounds().Min.Y; y < out.Bounds().Max.Y; y++ {
for x := out.Bounds().Min.X; x < out.Bounds().Max.X; x++ { for x := out.Bounds().Min.X; x < out.Bounds().Max.X; x++ {
color := img.At(x, y).(color.RGBA) color := out.At(x, y).(color.NRGBA)
if color.R != 0x80 || color.G != 0x80 || color.B != 0x80 || color.A != 0xFF { if color.R != 0x80 || color.G != 0x80 || color.B != 0x80 || color.A != 0xFF {
t.Fail() t.Fail()
} }