Go批量给图片添加文字水印

我这里需要给批量从指定文件夹下复制图片并存储到新的文件夹下,同时要给图片打上文字水印
原本文件所在位置
在这里插入图片描述
需要达到的效果
在这里插入图片描述

上面/001,/002,/003都是复制生成的,但是水印是不一样的
代码如下
这里依赖外部库github.com/golang/freetype
安装这两个库的命令为

go get github.com/golang/freetype

目录结构为
在这里插入图片描述

picture.go文件代码如下

package main

import (
	"fmt"
	"os"
	"path/filepath"
	"picture/watermark"
	"strconv"
)

/*批量给图片添加文本水印*/
func main() {
   

	var files []string
	root := "origin/"
	err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
   
		files = append(files, path)
		return nil
	})
	if err != nil {
   
		panic(err)
	}
	str1 := "第"
	chapter := ""
	str2 := "章图:"
	SavePath := ""
	for i := 1; i <= 100; i++ {
   
		SavePath = fmt.Sprintf("./0%02d", i)
		chapter = fmt.Sprintf("%02d", i)
		count := 0
		for _, file := range files {
   
			if count == 0 {
   
				count++
				continue
			}
			if count > 13 {
   
				break
			}
			strCount := strconv.Itoa(count)
			fmt.Println(file)
			arr := make([]textwatermark.FontInfo, 0)
			str2 := textwatermark.FontInfo{
   Size: 108, Message: str1 + chapter  + str2 + strCount, Position: textwatermark.Center, Dx: 20, Dy: 40, R: 255, G: 255, B: 0, A: 255}
			arr = append(arr, str2)
			//加水印图片路径
			//fileName := "001.jpg"
			w := new(textwatermark.Water)
			w.Pattern = ""
			textwatermark.Ttf = "simkai.ttf" //字体路径
			err := w.New(SavePath, file, arr)
			if err != nil {
   
				fmt.Println(err)
			}
			count++
		}
	}

}

watermark/textwatermark代码如下

package textwatermark
import (
	"errors"
	"fmt"
	"github.com/golang/freetype"
	"image"
	"image/color"
	"image/draw"
	"image/gif"
	"image/jpeg"
	"image/png"
	"io/ioutil"
	"math/rand"
	"os"
	"strings"
	"time"
)
// 水印的位置
const (
	TopLeft int = iota
	TopRight
	BottomLeft
	BottomRight
	Center
)
//字体路径
var Ttf string
type Water struct {
   
	Pattern string //增加按时间划分的子目录:默认没有时间划分的子目录
}
func (w *Water) New(SavePath, fileName string, typeface 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值