@@ -3,8 +3,10 @@ package gif
3
3
import (
4
4
"os"
5
5
"strconv"
6
+ "sync"
6
7
7
8
"github.com/FloatTech/zbputils/file"
9
+ "github.com/FloatTech/zbputils/img"
8
10
"github.com/sirupsen/logrus"
9
11
)
10
12
@@ -13,36 +15,51 @@ type context struct {
13
15
headimgsdir []string
14
16
}
15
17
16
- func dlchan (name string , c * chan * string ) {
18
+ func dlchan (name string , s * string , wg * sync.WaitGroup , exit func (error )) {
19
+ defer wg .Done ()
17
20
target := datapath + `materials/` + name
21
+ var err error
18
22
if file .IsNotExist (target ) {
19
- _ = file .DownloadTo (`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/` + name , target , true )
23
+ err = file .DownloadTo (`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/` + name , target , true )
24
+ if err != nil {
25
+ exit (err )
26
+ return
27
+ }
28
+ logrus .Debugln ("[gif] dl" , name , "to" , target , "succeeded" )
20
29
} else {
21
- logrus .Debugln ("[gif] dl" , name , "exists" )
30
+ logrus .Debugln ("[gif] dl" , name , "exists at" , target )
22
31
}
23
- * c <- & target
32
+ * s = target
24
33
}
25
34
26
- func dlblock (name string ) string {
35
+ func dlblock (name string ) ( string , error ) {
27
36
target := datapath + `materials/` + name
28
37
if file .IsNotExist (target ) {
29
- _ = file .DownloadTo (`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/` + name , target , true )
38
+ err := file .DownloadTo (`https://codechina.csdn.net/u011570312/imagematerials/-/raw/main/` + name , target , true )
39
+ if err != nil {
40
+ return "" , err
41
+ }
42
+ logrus .Debugln ("[gif] dl" , name , "to" , target , "succeeded" )
30
43
} else {
31
- logrus .Debugln ("[gif] dl" , name , "exists" )
44
+ logrus .Debugln ("[gif] dl" , name , "exists at" , target )
32
45
}
33
- return target
46
+ return target , nil
34
47
}
35
48
36
- func dlrange (prefix string , end int ) * [] chan * string {
49
+ func dlrange (prefix string , end int , wg * sync. WaitGroup , exit func ( error )) [] string {
37
50
if file .IsNotExist (datapath + `materials/` + prefix ) {
38
- _ = os .MkdirAll (datapath + `materials/` + prefix , 0755 )
51
+ err := os .MkdirAll (datapath + `materials/` + prefix , 0755 )
52
+ if err != nil {
53
+ exit (err )
54
+ return nil
55
+ }
39
56
}
40
- c := make ([]chan * string , end )
57
+ c := make ([]string , end )
41
58
for i := range c {
42
- c [ i ] = make ( chan * string )
43
- go dlchan (prefix + "/" + strconv .Itoa (i )+ ".png" , & c [i ])
59
+ wg . Add ( 1 )
60
+ go dlchan (prefix + "/" + strconv .Itoa (i )+ ".png" , & c [i ], wg , exit )
44
61
}
45
- return & c
62
+ return c
46
63
}
47
64
48
65
// 新的上下文
@@ -55,3 +72,14 @@ func newContext(user int64) *context {
55
72
c .headimgsdir [1 ] = c .usrdir + "1.gif"
56
73
return c
57
74
}
75
+
76
+ func LoadFirstFrames (paths []string , size int ) (imgs []* img.ImgFactory , err error ) {
77
+ imgs = make ([]* img.ImgFactory , size )
78
+ for i := range imgs {
79
+ imgs [i ], err = img .LoadFirstFrame (paths [i ], 0 , 0 )
80
+ if err != nil {
81
+ return nil , err
82
+ }
83
+ }
84
+ return imgs , nil
85
+ }
0 commit comments