-
-
Notifications
You must be signed in to change notification settings - Fork 201
/
size.go
85 lines (71 loc) · 1.33 KB
/
size.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package thumb
import (
"fmt"
"github.com/admpub/nging/v5/application/library/fileupdater"
)
// DefaultSize 缩略图默认尺寸
var DefaultSize = Size{
Width: 200,
Height: 200,
Quality: 100,
}
func AsSizes(ts ...Size) Sizes {
return Sizes(ts)
}
// Sizes 尺寸列表
type Sizes []Size
func (s Sizes) String() string {
var r string
for i, t := range s {
if i > 0 {
r += `,`
}
r += t.String()
}
return r
}
func (s Sizes) AutoCrop() Sizes {
r := Sizes{}
for _, t := range s {
if t.AutoCrop {
r = append(r, t)
}
}
return r
}
func (s *Sizes) Add(size Size) {
*s = append(*s, size)
}
func (s Sizes) Has(width, height float64) bool {
for _, v := range s {
if v.Width == width && v.Height == height {
return true
}
}
return false
}
func (s Sizes) Get(width, height float64) *Size {
for _, v := range s {
if v.Width == width && v.Height == height {
return &v
}
}
return nil
}
// Size 缩略图尺寸信息
type Size struct {
AutoCrop bool
Width float64
Height float64
Quality int
}
func (t Size) String() string {
return fmt.Sprintf("%vx%v", t.Width, t.Height)
}
// Suffix 文件名称尺寸后缀
func (t Size) Suffix() string {
return fmt.Sprintf("_%v_%v", t.Width, t.Height)
}
func (t Size) ThumbValue() fileupdater.ValueFunc {
return fileupdater.ThumbValue(int(t.Width), int(t.Height))
}