diff options
author | Unknwon <u@gogs.io> | 2019-10-24 01:51:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-24 01:51:46 -0700 |
commit | 01c8df01ec0608f1f25b2f1444adabb98fa5ee8a (patch) | |
tree | f8a7e5dd8d2a8c51e1ce2cabb9d33571a93314dd /internal/avatar/avatar.go | |
parent | 613139e7bef81d3573e7988a47eb6765f3de347a (diff) |
internal: move packages under this directory (#5836)
* Rename pkg -> internal
* Rename routes -> route
* Move route -> internal/route
* Rename models -> db
* Move db -> internal/db
* Fix route2 -> route
* Move cmd -> internal/cmd
* Bump version
Diffstat (limited to 'internal/avatar/avatar.go')
-rw-r--r-- | internal/avatar/avatar.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/avatar/avatar.go b/internal/avatar/avatar.go new file mode 100644 index 00000000..a8c3826d --- /dev/null +++ b/internal/avatar/avatar.go @@ -0,0 +1,43 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package avatar + +import ( + "fmt" + "image" + "image/color/palette" + "math/rand" + "time" + + "github.com/issue9/identicon" +) + +const AVATAR_SIZE = 290 + +// RandomImage generates and returns a random avatar image unique to input data +// in custom size (height and width). +func RandomImageSize(size int, data []byte) (image.Image, error) { + randExtent := len(palette.WebSafe) - 32 + rand.Seed(time.Now().UnixNano()) + colorIndex := rand.Intn(randExtent) + backColorIndex := colorIndex - 1 + if backColorIndex < 0 { + backColorIndex = randExtent - 1 + } + + // Define size, background, and forecolor + imgMaker, err := identicon.New(size, + palette.WebSafe[backColorIndex], palette.WebSafe[colorIndex:colorIndex+32]...) + if err != nil { + return nil, fmt.Errorf("identicon.New: %v", err) + } + return imgMaker.Make(data), nil +} + +// RandomImage generates and returns a random avatar image unique to input data +// in default size (height and width). +func RandomImage(data []byte) (image.Image, error) { + return RandomImageSize(AVATAR_SIZE, data) +} |