Skip to content
This repository was archived by the owner on Jan 12, 2023. It is now read-only.

Commit 0235b31

Browse files
committed
update 2021年07月25日 9:10:21
1 parent a00186a commit 0235b31

File tree

4 files changed

+73
-19
lines changed

4 files changed

+73
-19
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
logo2.png

README.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,37 @@
1+
# 简介
2+
13
给文件夹内图片添加水印的工具
24

35
源码来自 : https://blog.csdn.net/czy279470138/article/details/96993285
46

57
仅作部分修改
68

9+
## 效果
10+
11+
```
12+
main.exe -img 11.png -width 300 -hight 300
13+
```
14+
15+
![](./demo.png)
16+
17+
## 使用命令
18+
19+
单文件添加水印
20+
```
21+
./main.exe -img 1.png
22+
```
23+
24+
文件夹内图片添加水印
25+
```
26+
./main.exe -dir tmp
27+
```
28+
29+
自定义水印 (默认logo.png)
30+
```
31+
./main.exe -logo logo2.png -img 1.png
32+
```
33+
34+
水印区间 (默认皆为600)
735
```
8-
./main.exe -name "1.png"
36+
./main.exe -width 500 -hight 500 -img 1.png
937
```

demo.png

304 KB
Loading

main.go

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

1621
func 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

3242
func 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

Comments
 (0)