mirror of
https://github.com/celogeek/go-comic-converter.git
synced 2025-05-25 00:02:37 +02:00
30 lines
878 B
Go
30 lines
878 B
Go
package imageconverter
|
|
|
|
import (
|
|
"image/color"
|
|
"sort"
|
|
)
|
|
|
|
var ALGO_GRAY = map[string]func(color.Color, color.Palette) color.Gray{
|
|
"default": func(c color.Color, p color.Palette) color.Gray {
|
|
return p.Convert(c).(color.Gray)
|
|
},
|
|
"mean": func(c color.Color, p color.Palette) color.Gray {
|
|
r, g, b, _ := c.RGBA()
|
|
y := float64(r+g+b) / 3
|
|
return p.Convert(color.Gray16{Y: uint16(y)}).(color.Gray)
|
|
},
|
|
"luma": func(c color.Color, p color.Palette) color.Gray {
|
|
r, g, b, _ := c.RGBA()
|
|
y := (0.2126*float64(r) + 0.7152*float64(g) + 0.0722*float64(b))
|
|
return p.Convert(color.Gray16{Y: uint16(y)}).(color.Gray)
|
|
},
|
|
"luster": func(c color.Color, p color.Palette) color.Gray {
|
|
r, g, b, _ := c.RGBA()
|
|
arr := []float64{float64(r), float64(g), float64(b)}
|
|
sort.Float64s(arr)
|
|
y := (arr[0] + arr[2]) / 2
|
|
return p.Convert(color.Gray16{Y: uint16(y)}).(color.Gray)
|
|
},
|
|
}
|