(a *scdata)
| 27 | type scoredrawer func(a *scdata) (image.Image, error) |
| 28 | |
| 29 | func drawScore16(a *scdata) (image.Image, error) { |
| 30 | // 绘图 |
| 31 | getAvatar, err := initPic(a.picfile, a.uid) |
| 32 | if err != nil { |
| 33 | return nil, err |
| 34 | } |
| 35 | back, err := fio.LoadImage(a.picfile) |
| 36 | if err != nil { |
| 37 | return nil, err |
| 38 | } |
| 39 | // 避免图片过大,最大 1280*720 |
| 40 | back = factory.Limit(back, 1280, 720) |
| 41 | imgDX := back.Bounds().Dx() |
| 42 | imgDY := back.Bounds().Dy() |
| 43 | canvas := gg.NewContext(imgDX, imgDY) |
| 44 | // draw Aero Style |
| 45 | aeroStyle := gg.NewContext(imgDX-202, imgDY-202) |
| 46 | aeroStyle.DrawImage(imaging.Blur(back, 2.5), -100, -100) |
| 47 | // aero draw image. |
| 48 | aeroStyle.DrawRoundedRectangle(0, 0, float64(imgDX-200), float64(imgDY-200), 16) |
| 49 | // SideLine |
| 50 | aeroStyle.SetLineWidth(3) |
| 51 | aeroStyle.SetRGBA255(255, 255, 255, 100) |
| 52 | aeroStyle.StrokePreserve() |
| 53 | aeroStyle.SetRGBA255(255, 255, 255, 140) |
| 54 | // fill |
| 55 | aeroStyle.Fill() |
| 56 | // draw background |
| 57 | canvas.DrawImage(back, 0, 0) |
| 58 | // Aero style combine |
| 59 | canvas.DrawImage(aeroStyle.Image(), 100, 100) |
| 60 | canvas.Fill() |
| 61 | hourWord := getHourWord(time.Now()) |
| 62 | avatar, _, err := image.Decode(bytes.NewReader(getAvatar)) |
| 63 | if err != nil { |
| 64 | return nil, err |
| 65 | } |
| 66 | avatarf := factory.Size(avatar, 200, 200) |
| 67 | canvas.DrawImage(avatarf.Circle(0).Image(), 120, 120) |
| 68 | // draw info(name,coin,etc) |
| 69 | canvas.SetRGB255(0, 0, 0) |
| 70 | data, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true) |
| 71 | if err != nil { |
| 72 | return nil, err |
| 73 | } |
| 74 | if err = canvas.ParseFontFace(data, 50); err != nil { |
| 75 | return nil, err |
| 76 | } |
| 77 | // draw head |
| 78 | canvas.DrawStringWrapped(a.nickname, 350, 180, 0.5, 0.5, 0.5, 0.5, gg.AlignLeft) |
| 79 | canvas.Fill() |
| 80 | // main draw |
| 81 | data, err = file.GetLazyData(text.FontFile, control.Md5File, true) |
| 82 | if err != nil { |
| 83 | return nil, err |
| 84 | } |
| 85 | if err = canvas.ParseFontFace(data, 30); err != nil { |
| 86 | return nil, err |
nothing calls this directly
no test coverage detected