mirror of
https://github.com/esimov/caire.git
synced 2024-05-31 14:55:55 +08:00
23 lines
496 B
Go
23 lines
496 B
Go
package caire
|
|
|
|
import (
|
|
"image"
|
|
"image/color"
|
|
)
|
|
|
|
// Grayscale converts the image to grayscale mode.
|
|
func (c *Carver) Grayscale(src *image.NRGBA) *image.NRGBA {
|
|
dx, dy := src.Bounds().Max.X, src.Bounds().Max.Y
|
|
dst := image.NewNRGBA(src.Bounds())
|
|
|
|
for x := 0; x < dx; x++ {
|
|
for y := 0; y < dy; y++ {
|
|
r, g, b, _ := src.At(x, y).RGBA()
|
|
lum := float32(r)*0.299 + float32(g)*0.587 + float32(b)*0.114
|
|
pixel := color.Gray{Y: uint8(lum / 256)}
|
|
dst.Set(x, y, pixel)
|
|
}
|
|
}
|
|
return dst
|
|
}
|