package imglib import ( "os" "testing" "github.com/fogleman/gg" ) // TestAddChineseWatermark 给桌面 kbk.png 添加豆包AI风格斜纹平铺水印 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() dc := gg.NewContext(bounds.Dx(), bounds.Dy()) dc.DrawImage(srcImg, 0, 0) fontPath := getDefaultFontPath() if fontPath == "" { t.Skip("未找到中文字体") } if err := dc.LoadFontFace(fontPath, 48); err != nil { t.Fatalf("加载字体失败: %v", err) } // 斜纹平铺水印 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() } } outPath := "d:\\source\\daShangDao_utils\\kbk_watermarked.png" f, err := os.Create(outPath) if err != nil { t.Fatalf("创建文件失败: %v", err) } defer f.Close() err = SavePNG(dc.Image(), outPath) if err != nil { t.Fatalf("保存图片失败: %v", err) } t.Logf("水印图片已保存到: %s", outPath) }