imageimage/draw
package main

import (
    "image"
    "image/color"
    "image/draw"
    "image/font"
    "image/jpeg"
    "os"

    "golang.org/x/image/font/basicfont"
)

func main() {
    // 打开原始图像
    file, err := os.Open("input.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    img, err := jpeg.Decode(file)
    if err != nil {
        panic(err)
    }

    // 创建新的图像并将原始图像绘制到其中
    bounds := img.Bounds()
    rgba := image.NewRGBA(bounds)
    draw.Draw(rgba, bounds, img, image.Point{0, 0}, draw.Src)

    // 添加水印文字
    c := color.RGBA{255, 255, 255, 255}
    point := image.Point{10, 10}
    drawString(rgba, "Watermark", point, c)

    // 将结果保存到文件
    out, err := os.Create("output.jpg")
    if err != nil {
        panic(err)
    }
    defer out.Close()
    jpeg.Encode(out, rgba, nil)
}

func drawString(img *image.RGBA, s string, sp image.Point, c color.RGBA) {
    draw.Draw(img, img.Bounds(), &image.Uniform{c}, image.ZP, draw.Src)
    d := &font.Drawer{
        Dst:  img,
        Src:  image.NewUniform(color.Black),
        Face: basicfont.Face7x13,
        Dot:  sp,
    }
    d.DrawString(s)
}
image.NewRGBAdraw.Draw
drawStringdraw.Drawimage/drawfontbasicfont
jpeg.Encode

请注意,这只是一个简单的示例程序,用于演示如何在 Go 中添加水印图像。实际应用中可能需要更复杂的逻辑来生成和添加水印。