mirror of
https://github.com/imgproxy/imgproxy.git
synced 2024-11-29 08:22:11 +02:00
35 lines
627 B
Go
35 lines
627 B
Go
package vips
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
)
|
|
|
|
var hexColorRegex = regexp.MustCompile("^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$")
|
|
|
|
const (
|
|
hexColorLongFormat = "%02x%02x%02x"
|
|
hexColorShortFormat = "%1x%1x%1x"
|
|
)
|
|
|
|
type Color struct{ R, G, B uint8 }
|
|
|
|
func ColorFromHex(hexcolor string) (Color, error) {
|
|
c := Color{}
|
|
|
|
if !hexColorRegex.MatchString(hexcolor) {
|
|
return c, fmt.Errorf("Invalid hex color: %s", hexcolor)
|
|
}
|
|
|
|
if len(hexcolor) == 3 {
|
|
fmt.Sscanf(hexcolor, hexColorShortFormat, &c.R, &c.G, &c.B)
|
|
c.R *= 17
|
|
c.G *= 17
|
|
c.B *= 17
|
|
} else {
|
|
fmt.Sscanf(hexcolor, hexColorLongFormat, &c.R, &c.G, &c.B)
|
|
}
|
|
|
|
return c, nil
|
|
}
|