package imglib import ( "image" "image/color" "testing" "github.com/golang/freetype" "golang.org/x/image/draw" ) // TestAddChineseWatermark 给桌面 kbk.png 添加中文文字水印 func TestAddChineseWatermark(t *testing.T) { srcPath := `C:\Users\Administrator\Desktop\kbk.png` srcImg, _, err := NewImageInputFromFile(srcPath).Load() if err != nil { t.Fatalf("加载源图片失败: %v", err) } bounds := srcImg.Bounds() dst := image.NewRGBA(bounds) draw.Draw(dst, bounds, srcImg, bounds.Min, draw.Src) font, err := GetFont() if err != nil { t.Skipf("获取字体失败: %v", err) } c := freetype.NewContext() c.SetDPI(72) c.SetFont(font) c.SetClip(dst.Bounds()) c.SetDst(dst) fontSize := 36.0 c.SetFontSize(fontSize) text := "这是一个水印" x := bounds.Dx() - 280 y := bounds.Dy() - 60 c.SetSrc(image.NewUniform(color.RGBA{0, 0, 0, 180})) pt := freetype.Pt(x, y) if _, err := c.DrawString(text, pt); err != nil { t.Fatalf("绘制水印失败: %v", err) } outPath := "d:\\source\\daShangDao_utils\\kbk_watermarked.png" err = SavePNG(dst, outPath) if err != nil { t.Fatalf("保存图片失败: %v", err) } t.Logf("水印图片已保存到: %s", outPath) }