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 中添加水印图像。实际应用中可能需要更复杂的逻辑来生成和添加水印。