From fb75bfefb5d4de864b275e7825cb867325356af0 Mon Sep 17 00:00:00 2001 From: Yorling Date: Sun, 21 May 2023 22:57:36 +0800 Subject: [PATCH] fix: process icon Signed-off-by: Yorling --- cards.go | 29 ++++++++++------------------- reader.go | 12 +++++------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/cards.go b/cards.go index b91c200..4a4042f 100644 --- a/cards.go +++ b/cards.go @@ -185,32 +185,23 @@ const ( defaultIconSize = 30 ) -func initIcon() { - askerImg := mustReadImg("assets/sun.png") - readerImg := mustReadImg("assets/moon.png") - - askerImg = imaging.Resize(askerImg, defaultIconSize, defaultIconSize, imaging.Lanczos) - readerImg = imaging.Resize(readerImg, defaultIconSize, defaultIconSize, imaging.Lanczos) - - dc := gg.NewContextForImage(askerImg) - dc.SetFillRule(gg.FillRuleWinding) +func processIcon(pic image.Image) image.Image { + if b := pic.Bounds(); b.Dx() != defaultIconSize || b.Dy() != defaultIconSize { + pic = imaging.Resize(pic, defaultIconSize, defaultIconSize, imaging.Lanczos) + } + dc := gg.NewContextForImage(pic) dc.DrawCircle(float64(defaultIconSize/2), float64(defaultIconSize/2), float64(defaultIconSize/2)) dc.Clip() dc.InvertMask() dc.DrawRectangle(0, 0, float64(defaultIconSize), float64(defaultIconSize)) dc.SetColor(color.Black) dc.Fill() - askerImg = dc.Image() + return dc.Image() +} - dc = gg.NewContextForImage(readerImg) - dc.SetFillRule(gg.FillRuleWinding) - dc.DrawCircle(float64(defaultIconSize/2), float64(defaultIconSize/2), float64(defaultIconSize/2)) - dc.Clip() - dc.InvertMask() - dc.DrawRectangle(0, 0, float64(defaultIconSize), float64(defaultIconSize)) - dc.SetColor(color.Black) - dc.Fill() - readerImg = dc.Image() +func initIcon() { + askerImg := processIcon(mustReadImg("assets/sun.png")) + readerImg := processIcon(mustReadImg("assets/moon.png")) assets.AskerImg = askerImg assets.ReaderImg = readerImg diff --git a/reader.go b/reader.go index 853e80d..9e486a5 100644 --- a/reader.go +++ b/reader.go @@ -257,18 +257,16 @@ func (r *Reader) Render(cards [3]Card, Q, A string, opt DivineOption) (image.Ima } if opt.AskerImg == nil { opt.AskerImg = r.assets.AskerImg + } else { + opt.AskerImg = processIcon(opt.AskerImg) } if opt.Reader == "" { - opt.Reader = "Fortuneteller" + opt.Reader = "占卜人" } if opt.ReaderImg == nil { opt.ReaderImg = r.assets.ReaderImg - } - if b := opt.AskerImg.Bounds(); b.Dx() != defaultIconSize || b.Dy() != defaultIconSize { - opt.AskerImg = imaging.Resize(opt.AskerImg, defaultIconSize, defaultIconSize, imaging.Lanczos) - } - if b := opt.ReaderImg.Bounds(); b.Dx() != defaultIconSize || b.Dy() != defaultIconSize { - opt.ReaderImg = imaging.Resize(opt.ReaderImg, defaultIconSize, defaultIconSize, imaging.Lanczos) + } else { + opt.ReaderImg = processIcon(opt.ReaderImg) } img := image.NewNRGBA64(image.Rect(0, 0, defaultImageWidth, defaultImageHeight))