summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-07-28 16:39:50 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-07-28 16:55:13 -0700
commit376ce3c4b0a99f78fe71433f70eea7cc5e0f8b67 (patch)
treec6385b22dc4cea5e115336ce0fc20236d5013908 /api
parent3c1eefe984cb023402a1e9596de12a1ce7b0dcc3 (diff)
downloadchat-376ce3c4b0a99f78fe71433f70eea7cc5e0f8b67.tar.gz
chat-376ce3c4b0a99f78fe71433f70eea7cc5e0f8b67.tar.bz2
chat-376ce3c4b0a99f78fe71433f70eea7cc5e0f8b67.zip
Added back username initials being included in default profile picture
Diffstat (limited to 'api')
-rw-r--r--api/user.go43
1 files changed, 38 insertions, 5 deletions
diff --git a/api/user.go b/api/user.go
index 2dcb1700b..bb7e564ae 100644
--- a/api/user.go
+++ b/api/user.go
@@ -5,7 +5,9 @@ package api
import (
"bytes"
+ "code.google.com/p/freetype-go/freetype"
l4g "code.google.com/p/log4go"
+ "flag"
"fmt"
"github.com/gorilla/mux"
"github.com/mattermost/platform/model"
@@ -21,6 +23,7 @@ import (
_ "image/jpeg"
"image/png"
"io"
+ "io/ioutil"
"net/http"
"net/url"
"strconv"
@@ -588,8 +591,13 @@ func getAudits(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
-func createProfileImage(username string, userId string) ([]byte, *model.AppError) {
+var (
+ dpi = flag.Float64("dpi", 72, "screen resolution in Dots Per Inch")
+ fontfile = flag.String("fontfile", utils.FindDir("web/static/fonts")+"/luximbi.ttf", "filename of the ttf font")
+ size = flag.Float64("size", 62, "font size in points")
+)
+func createProfileImage(username string, userId string) ([]byte, *model.AppError) {
colors := []color.NRGBA{
{197, 8, 126, 255},
{227, 207, 18, 255},
@@ -627,7 +635,6 @@ func createProfileImage(username string, userId string) ([]byte, *model.AppError
parts := strings.Split(username, " ")
for _, v := range parts {
-
if len(v) > 0 {
initials += string(strings.ToUpper(v)[0])
}
@@ -641,13 +648,39 @@ func createProfileImage(username string, userId string) ([]byte, *model.AppError
initials = initials[0:2]
}
+ flag.Parse()
+
+ fontBytes, err := ioutil.ReadFile(*fontfile)
+ if err != nil {
+ return nil, model.NewAppError("createProfileImage", "Could not create default profile image font", err.Error())
+ }
+ font, err := freetype.ParseFont(fontBytes)
+ if err != nil {
+ return nil, model.NewAppError("createProfileImage", "Could not create default profile image font", err.Error())
+ }
+
color := colors[int64(seed)%int64(len(colors))]
- img := image.NewRGBA(image.Rect(0, 0, int(utils.Cfg.ImageSettings.ProfileWidth), int(utils.Cfg.ImageSettings.ProfileHeight)))
- draw.Draw(img, img.Bounds(), &image.Uniform{color}, image.ZP, draw.Src)
+ dstImg := image.NewRGBA(image.Rect(0, 0, int(utils.Cfg.ImageSettings.ProfileWidth), int(utils.Cfg.ImageSettings.ProfileHeight)))
+ srcImg := image.White
+ draw.Draw(dstImg, dstImg.Bounds(), &image.Uniform{color}, image.ZP, draw.Src)
+
+ c := freetype.NewContext()
+ c.SetDPI(*dpi)
+ c.SetFont(font)
+ c.SetFontSize(*size)
+ c.SetClip(dstImg.Bounds())
+ c.SetDst(dstImg)
+ c.SetSrc(srcImg)
+
+ pt := freetype.Pt(int(utils.Cfg.ImageSettings.ProfileWidth)/2-45, int(utils.Cfg.ImageSettings.ProfileHeight)/2+20)
+ _, err = c.DrawString(initials, pt)
+ if err != nil {
+ return nil, model.NewAppError("createProfileImage", "Could not add user initial to default profile picture", err.Error())
+ }
buf := new(bytes.Buffer)
- if imgErr := png.Encode(buf, img); imgErr != nil {
+ if imgErr := png.Encode(buf, dstImg); imgErr != nil {
return nil, model.NewAppError("createProfileImage", "Could not encode default profile image", imgErr.Error())
} else {
return buf.Bytes(), nil