基于go-图片加上水印

757 阅读1分钟

水印代码

go操作图片库gg

直接上代码:

package watermarker

import (
	"fmt"

	"github.com/fogleman/gg"
)

func MakeWaterMarker(imgPath string, waterDesc string, outPath string) bool {
	im, err := gg.LoadImage(imgPath)
	if err != nil {
		return false
	}
	w := im.Bounds().Size().X
	h := im.Bounds().Size().Y
	fmt.Print(w, h)
	dc := gg.NewContext(w, h)
	rd := w / 375
	if rd == 0 {
		rd = 1
	}
	if err := dc.LoadFontFace("./font.ttf", float64(rd*24)); err != nil {
		fmt.Print(err)
		return false
	}
	dc.DrawImage(im, 0, 0)
	sw, sh := dc.MeasureString(waterDesc)
	dc.SetRGBA(99, 99, 99, 0.6)
	for j := 0; j < h; j += (int(sh + float64(30*rd))) {
		for i := 0; i < w; i += (int(sw + float64(24*rd))) {
			dc.Push()
			dc.DrawString(waterDesc, float64(i), float64(j))
			dc.Pop()
		}
	}
	dc.SavePNG(outPath)
	return true
}