go image标准库实现合成图片、加水印
package main
import (
"flag"
"image"
"image/draw"
"image/png"
"os"
"path"
)
var (
bg = flag.String("bg", "bg.png", "背景图片")
pt = flag.String("pt", "pt.png", "前景图片")
offsetX = flag.Int("offsetX", 0, "x轴偏移值")
offsetY = flag.Int("offsetY", 0, "y轴偏移值")
prefix = flag.String("prefix", "test_", "文件名前缀")
)
func main() {
flag.Parse()
mergeImage(*pt)
}
func mergeImage(file string) {
imgb, _ := os.Open(*bg)
img, _ := png.Decode(imgb)
defer imgb.Close()
b1 := img.Bounds()
wmb, _ := os.Open(file)
watermark, _ := png.Decode(wmb)
b2 := watermark.Bounds()
defer wmb.Close()
offset := image.Pt((b1.Max.X-b2.Max.X)/2+*offsetX, (b1.Max.Y-b2.Max.Y)/2+*offsetY)
b := img.Bounds()
m := image.NewRGBA(b)
draw.Draw(m, b, img, image.ZP, draw.Src)
draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over)
imgw, _ := os.Create(*prefix + path.Base(file))
png.Encode(imgw, m)
defer imgw.Close()
}
上面的代码只是提供一个思路,只支持png图片,需要jpg可自行修改。
如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。
本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。