@@ -9,9 +9,14 @@ import (
99 "log"
1010 "net/http"
1111 "os"
12+ "io/ioutil"
1213)
1314
14- var Input_name = flag .String ("name" , "null" , "输入文件名" )
15+ var Input_img = flag .String ("img" , "" , "输入文件名" )
16+ var Input_dir = flag .String ("dir" , "" , "输入文件夹名" )
17+ var Input_logo = flag .String ("logo" , "logo.png" , "输入 logo 名(例如:logo.png)" )
18+ var Input_width = flag .Int ("width" , 600 , "输入宽度" )
19+ var Input_hight = flag .Int ("hight" , 600 , "输入高度" )
1520
1621func main () {
1722 flag .Parse ()
@@ -20,18 +25,26 @@ func main() {
2025 fmt .Printf ("arg[%d]=%s\n " , i , flag .Arg (i ))
2126 }
2227
23- if * Input_name == "" {
24- fmt . Println ( "文件夹?" )
28+ if * Input_img == "" {
29+ * Input_img = "null"
2530 }else {
26- fmt .Println ("目标图片:" ,* Input_name )
2731 imgwater ()
2832 }
2933
34+ if * Input_dir == "" {
35+ * Input_dir = "null"
36+ }else {
37+ imgwater_dir ()
38+ }
39+
3040}
3141
3242func imgwater () {
33- srcImg := * Input_name // 原始图片
34- imgWaterMarkPath := "./logo.png" // 水印图片
43+
44+ fmt .Println ("目标图片:" ,* Input_img )
45+
46+ srcImg := * Input_img // 原始图片
47+ imgWaterMarkPath := * Input_logo // 水印图片
3548
3649 // 原始图片
3750 originalImg , err := os .Open (srcImg )
@@ -68,7 +81,7 @@ func imgwater() {
6881 imgType := http .DetectContentType (buff )
6982
7083 if imgType == "image/jpeg" {
71- fmt .Println ("这是JPG文件" )
84+ // fmt.Println("这是JPG文件")
7285 imgJpeg , err := jpeg .Decode (originalImg )
7386 if err != nil {
7487 fmt .Println ("把jpeg图片解码为结构体时出错" )
@@ -77,29 +90,32 @@ func imgwater() {
7790 b := imgJpeg .Bounds ()
7891 waterMarkWidth := b .Max .X
7992 waterMarkHeight := b .Max .Y
80- fmt .Println ("jpeg原始图片宽" , waterMarkWidth , "jpeg原始图片高" , waterMarkHeight )
93+ // fmt.Println("jpeg原始图片宽", waterMarkWidth, "jpeg原始图片高", waterMarkHeight)
8194
8295 m := image .NewRGBA (b )
8396
8497 // 原始图片
8598 draw .Draw (m , b , imgJpeg , image .ZP , draw .Src )
8699 // 水印图片
87100 for i := 0 ; i < waterMarkWidth ; i ++ {
88- offsetWidth := 1000 * i
101+ offsetWidth := * Input_width * i
89102 if offsetWidth < waterMarkWidth {
90103 for j := 0 ; j < waterMarkHeight ; j ++ {
91- offsetHeight := 1000 * j
104+ offsetHeight := * Input_hight * j
92105 if offsetHeight < waterMarkHeight {
93106 offset := image .Pt (offsetWidth , offsetHeight )
94107 draw .Draw (m , waterMarkImg .Bounds ().Add (offset ), waterMarkImg , image .ZP , draw .Over )
95- fmt .Println ("jpegOffset" , offset )
108+ // fmt.Println("jpegOffset", offset)
96109 }
97110 }
98111 }
99112 }
100113
114+
101115 // 生成新图片new.jpg,并设置图片质量 100
102- imgNew , err := os .Create ("new.jpg" ) // 这里可以设置为上传图片 srcImg
116+ imgNew , err := os .Create (* Input_img ) // 这里可以设置为上传图片 srcImg
117+
118+
103119 if err != nil {
104120 log .Println (err )
105121 }
@@ -115,15 +131,15 @@ func imgwater() {
115131 }
116132
117133 if imgType == "image/png" {
118- fmt .Println ("这是PNG文件" )
134+ // fmt.Println("这是PNG文件")
119135 imgPng , err := png .Decode (originalImg )
120136 if err != nil {
121137 fmt .Println ("把PNG图片解码为结构体时出错" )
122138 }
123139 b := imgPng .Bounds ()
124140 waterMarkWidth := b .Max .X
125141 waterMarkHeight := b .Max .Y
126- fmt .Println ("png原始图片宽" , waterMarkWidth , "png原始图片高" , waterMarkHeight )
142+ // fmt.Println("png原始图片宽", waterMarkWidth, "png原始图片高", waterMarkHeight)
127143
128144 m := image .NewRGBA (b )
129145
@@ -133,22 +149,22 @@ func imgwater() {
133149 // 水印图片
134150 for i := 0 ; i < waterMarkWidth ; i ++ {
135151 // resWidth := 0
136- offsetWidth := 1000 * i
152+ offsetWidth := * Input_width * i
137153 // fmt.Println(offsetWidth)
138154 if offsetWidth < waterMarkWidth {
139155 for j := 0 ; j < waterMarkHeight ; j ++ {
140- offsetHeight := 1000 * j
156+ offsetHeight := * Input_hight * j
141157 if offsetHeight < waterMarkHeight {
142158 offset := image .Pt (offsetWidth , offsetHeight )
143159 draw .Draw (m , waterMarkImg .Bounds ().Add (offset ), waterMarkImg , image .ZP , draw .Over )
144- fmt .Println ("pngOffset" , offset )
160+ // fmt.Println("pngOffset", offset)
145161 }
146162 }
147163 }
148164 }
149165
150166 // 生成新图片new.png
151- imgNew , err := os .Create ("./new.png" ) // 这里可以设置为上传图片 srcImg
167+ imgNew , err := os .Create (* Input_img ) // 这里可以设置为上传图片 srcImg
152168 if err != nil {
153169 log .Println (err )
154170 }
@@ -164,3 +180,12 @@ func imgwater() {
164180 fmt .Println ("暂不支持 gif 格式。。。" )
165181 }
166182}
183+
184+ func imgwater_dir () {
185+ fmt .Println ("目标文件夹:" ,* Input_dir )
186+ files , _ := ioutil .ReadDir (* Input_dir )
187+ for _ , f := range files {
188+ * Input_img = * Input_dir + "/" + f .Name ()
189+ imgwater ()
190+ }
191+ }
0 commit comments