@@ -187,7 +187,13 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
187187 back = imgfactory .Size (back , int (bw * cw / bw ), int (bh * cw / bw )).Image ()
188188 canvas .DrawImage (back , 0 , 0 )
189189 }
190-
190+ var blurback image.Image
191+ bwg := & sync.WaitGroup {}
192+ bwg .Add (1 )
193+ go func () {
194+ defer bwg .Done ()
195+ blurback = imaging .Blur (canvas .Image (), 8 )
196+ }()
191197 wg := & sync.WaitGroup {}
192198 wg .Add (5 )
193199
@@ -200,8 +206,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
200206 go func () {
201207 defer wg .Done ()
202208 titlecard := gg .NewContext (cardw , titlecardh )
203-
204- titlecard .DrawImage (imaging . Blur ( canvas . Image (), 8 ) , - 70 , - 70 )
209+ bwg . Wait ()
210+ titlecard .DrawImage (blurback , - 70 , - 70 )
205211
206212 titlecard .DrawRoundedRectangle (1 , 1 , float64 (titlecard .W ()- 1 * 2 ), float64 (titlecardh - 1 * 2 ), 16 )
207213 titlecard .SetLineWidth (3 )
@@ -253,8 +259,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
253259 go func () {
254260 defer wg .Done ()
255261 basiccard := gg .NewContext (cardw , basiccardh )
256-
257- basiccard .DrawImage (imaging . Blur ( canvas . Image (), 8 ) , - 70 , - 70 - titlecardh - 40 )
262+ bwg . Wait ()
263+ basiccard .DrawImage (blurback , - 70 , - 70 - titlecardh - 40 )
258264
259265 basiccard .DrawRoundedRectangle (1 , 1 , float64 (basiccard .W ()- 1 * 2 ), float64 (basiccardh - 1 * 2 ), 16 )
260266 basiccard .SetLineWidth (3 )
@@ -317,7 +323,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
317323 go func () {
318324 defer wg .Done ()
319325 diskcard := gg .NewContext (cardw , diskcardh )
320- diskcard .DrawImage (imaging .Blur (canvas .Image (), 8 ), - 70 , - 70 - titlecardh - 40 - basiccardh - 40 )
326+ bwg .Wait ()
327+ diskcard .DrawImage (blurback , - 70 , - 70 - titlecardh - 40 - basiccardh - 40 )
321328
322329 diskcard .DrawRoundedRectangle (1 , 1 , float64 (diskcard .W ()- 1 * 2 ), float64 (diskcardh - 1 * 2 ), 16 )
323330 diskcard .SetLineWidth (3 )
@@ -335,6 +342,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
335342 if dslen == 1 {
336343 diskcard .SetRGBA255 (192 , 192 , 192 , 255 )
337344 diskcard .DrawRoundedRectangle (40 , 40 , float64 (diskcard .W ())- 40 - 100 , 50 , 12 )
345+ diskcard .ClipPreserve ()
338346 diskcard .Fill ()
339347
340348 switch {
@@ -348,7 +356,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
348356
349357 diskcard .DrawRoundedRectangle (40 , 40 , (float64 (diskcard .W ())- 40 - 100 )* diskstate [0 ].precent * 0.01 , 50 , 12 )
350358 diskcard .Fill ()
351-
359+ diskcard . ResetClip ()
352360 diskcard .SetRGBA255 (30 , 30 , 30 , 255 )
353361
354362 fw , _ := diskcard .MeasureString (diskstate [0 ].name )
@@ -392,8 +400,8 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
392400 go func () {
393401 defer wg .Done ()
394402 moreinfocard := gg .NewContext (cardw , moreinfocardh )
395-
396- moreinfocard .DrawImage (imaging . Blur ( canvas . Image (), 8 ) , - 70 , - 70 - titlecardh - 40 - basiccardh - 40 - diskcardh - 40 )
403+ bwg . Wait ()
404+ moreinfocard .DrawImage (blurback , - 70 , - 70 - titlecardh - 40 - basiccardh - 40 - diskcardh - 40 )
397405
398406 moreinfocard .DrawRoundedRectangle (1 , 1 , float64 (moreinfocard .W ()- 1 * 2 ), float64 (moreinfocard .H ()- 1 * 2 ), 16 )
399407 moreinfocard .SetLineWidth (3 )
@@ -430,7 +438,7 @@ func drawstatus(m *ctrl.Control[*zero.Ctx], uid int64, botname string) (sendimg
430438 shadow .Stroke ()
431439 shadow .DrawRoundedRectangle (70 , float64 (70 + titlecardh + 40 ), float64 (cardw ), float64 (basiccardh ), 16 )
432440 shadow .Stroke ()
433- shadow .DrawRoundedRectangle (70 , float64 (70 + titlecardh + 40 + basiccardh + 40 ), float64 (cardw ), float64 (basiccardh ), 16 )
441+ shadow .DrawRoundedRectangle (70 , float64 (70 + titlecardh + 40 + basiccardh + 40 ), float64 (cardw ), float64 (diskcardh ), 16 )
434442 shadow .Stroke ()
435443 shadow .DrawRoundedRectangle (70 , float64 (70 + titlecardh + 40 + basiccardh + 40 + diskcardh + 40 ), float64 (cardw ), float64 (moreinfocardh ), 16 )
436444 shadow .Stroke ()
0 commit comments