MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / drawPackImage

Function drawPackImage

plugin/mcfish/pack.go:201–259  ·  view source on GitHub ↗
(uid int64, equipInfo equip, articles []article)

Source from the content-addressed store, hash-verified

199}
200
201func drawPackImage(uid int64, equipInfo equip, articles []article) (imagePicByte []byte, err error) {
202 fontdata, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
203 if err != nil {
204 return nil, err
205 }
206 var (
207 wg sync.WaitGroup
208 equipBlock image.Image // 装备信息
209 packBlock image.Image // 背包信息
210 )
211 wg.Add(1)
212 // 绘制ID
213 go func() {
214 defer wg.Done()
215 if equipInfo == (equip{}) {
216 equipBlock, err = drawEquipEmptyBlock(fontdata)
217 } else {
218 equipBlock, err = drawEquipInfoBlock(equipInfo, fontdata)
219 }
220 if err != nil {
221 return
222 }
223 }()
224 wg.Add(1)
225 // 绘制基本信息
226 go func() {
227 defer wg.Done()
228 if len(articles) == 0 {
229 packBlock, err = drawArticleEmptyBlock(fontdata)
230 } else {
231 packBlock, err = drawArticleInfoBlock(uid, articles, fontdata)
232 }
233 if err != nil {
234 return
235 }
236 }()
237 wg.Wait()
238 if equipBlock == nil || packBlock == nil {
239 err = errors.New("生成图片失败,数据缺失")
240 return
241 }
242 // 计算图片高度
243 backDX := 1020
244 backDY := 10 + equipBlock.Bounds().Dy() + 10 + packBlock.Bounds().Dy() + 10
245 canvas := gg.NewContext(backDX, backDY)
246
247 // 画底色
248 canvas.DrawRectangle(0, 0, float64(backDX), float64(backDY))
249 canvas.SetRGBA255(150, 150, 150, 255)
250 canvas.Fill()
251 canvas.DrawRectangle(10, 10, float64(backDX-20), float64(backDY-20))
252 canvas.SetRGBA255(255, 255, 255, 255)
253 canvas.Fill()
254
255 canvas.DrawImage(equipBlock, 10, 10)
256 canvas.DrawImage(packBlock, 10, 10+equipBlock.Bounds().Dy()+10)
257
258 return factory.ToBytes(canvas.Image())

Callers 1

initFunction · 0.85

Calls 4

drawEquipEmptyBlockFunction · 0.85
drawEquipInfoBlockFunction · 0.85
drawArticleEmptyBlockFunction · 0.85
drawArticleInfoBlockFunction · 0.85

Tested by

no test coverage detected