From f4bc6330994756222088ff0f1447f909fac01439 Mon Sep 17 00:00:00 2001 From: Cai1Cai1 Date: Tue, 30 Jun 2026 14:50:23 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E6=B7=BB=E5=8A=A0=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=B0=B4=E5=8D=B0=E6=B5=8B=E8=AF=95=EF=BC=88freetype=20?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=BB=98=E5=88=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- imglib/watermark_test.go | 48 ++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/imglib/watermark_test.go b/imglib/watermark_test.go index f8bb7b7..42bbdb3 100644 --- a/imglib/watermark_test.go +++ b/imglib/watermark_test.go @@ -1,13 +1,16 @@ package imglib import ( + "image" + "image/color" "os" "testing" - "github.com/fogleman/gg" + "github.com/golang/freetype" + "golang.org/x/image/draw" ) -// TestAddChineseWatermark 给桌面 kbk.png 添加豆包AI风格斜纹平铺水印 +// TestAddChineseWatermark 给桌面 kbk.png 添加大号文字水印 func TestAddChineseWatermark(t *testing.T) { srcPath := `C:\Users\Administrator\Desktop\kbk.png` @@ -17,33 +20,26 @@ func TestAddChineseWatermark(t *testing.T) { } bounds := srcImg.Bounds() - dc := gg.NewContext(bounds.Dx(), bounds.Dy()) - dc.DrawImage(srcImg, 0, 0) + dst := image.NewRGBA(bounds) + draw.Draw(dst, bounds, srcImg, bounds.Min, draw.Src) - fontPath := getDefaultFontPath() - if fontPath == "" { - t.Skip("未找到中文字体") + font, err := GetFont() + if err != nil { + t.Skipf("获取字体失败: %v", err) } - if err := dc.LoadFontFace(fontPath, 48); err != nil { - t.Fatalf("加载字体失败: %v", err) - } + c := freetype.NewContext() + c.SetDPI(72) + c.SetFont(font) + c.SetClip(dst.Bounds()) + c.SetDst(dst) - // 斜纹平铺水印 - tileW, tileH := 500, 400 - for y := -tileH; y < bounds.Dy()+tileH; y += tileH { - for x := -tileW; x < bounds.Dx()+tileW; x += tileW { - cx := float64(x) + 250 - cy := float64(y) + 200 - dc.Push() - dc.RotateAbout(-0.35, cx, cy) - dc.SetRGB(1, 1, 1) - dc.SetAlpha(0.25) - dc.DrawStringAnchored("这是一个水印", cx, cy, 0.5, 0.5) - dc.SetRGBA(1, 1, 1, 0.15) - dc.DrawStringAnchored("这是一个水印", float64(x)+250, float64(y)+200, 0.5, 0.5) - dc.Pop() - } + // 大号红色文字(中间偏上) + c.SetFontSize(120) + c.SetSrc(image.NewUniform(color.RGBA{255, 0, 0, 255})) + pt := freetype.Pt(300, 800) + if _, err := c.DrawString("这是一个水印", pt); err != nil { + t.Fatalf("绘制水印失败: %v", err) } outPath := "d:\\source\\daShangDao_utils\\kbk_watermarked.png" @@ -52,7 +48,7 @@ func TestAddChineseWatermark(t *testing.T) { t.Fatalf("创建文件失败: %v", err) } defer f.Close() - err = SavePNG(dc.Image(), outPath) + err = SavePNG(dst, outPath) if err != nil { t.Fatalf("保存图片失败: %v", err) }