/
source.go
executable file
·54 lines (50 loc) · 1.03 KB
/
source.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package poster
import (
"bytes"
"crypto/tls"
"errors"
"image"
"io/ioutil"
"net/http"
)
// GetImage 从源读取图片,支持网络和本地
func GetImage(src string) (m image.Image, err error) {
var r *bytes.Reader
r, err = getResourceReader(src)
if err != nil {
return nil, err
}
m, _, err = image.Decode(r)
return
}
// getResourceReader 读取图片 支持本地和网络图片
func getResourceReader(src string) (r *bytes.Reader, err error) {
if len(src) < 5 {
return nil, errors.New("图片源错误")
}
//跳过证书验证
c := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
}
if src[0:4] == "http" {
resp, err := c.Get(src)
if err != nil {
return r, err
}
defer resp.Body.Close()
fileBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return r, err
}
r = bytes.NewReader(fileBytes)
} else {
fileBytes, err := ioutil.ReadFile(src)
if err != nil {
return nil, err
}
r = bytes.NewReader(fileBytes)
}
return r, nil
}