首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

go给图片添加水印

package main import ( "fmt" "image" "image/draw" "image/jpeg" "image/png" "os" ) func main() { //打开原始图片a.jpg imgB, _ := os.Open("a.jpg") //获取jpeg图片io对象 img, _ := jpeg.Decode(imgB) //io文件在结束时候关闭 defer imgB.Close() //打开水印图片 wmb, _ := os.Open("watermark.png") watermark, _ := png.Decode(wmb) defer wmb.Close() //把水印写到右下角,并向0坐标各偏移10个像素 //Bounds().Dx()表示获取图片的宽度 //Bounds().Dy()表示获取图片的高度 offset := image.Pt(img.Bounds().Dx()-watermark.Bounds().Dx()-10, img.Bounds().Dy()-watermark.Bounds().Dy()-10) //获取图片的边界 b := img.Bounds() //画一张新图 m := image.NewNRGBA(b) //Over说明(在mask上的src)覆盖在dst上 //src作用在mask上 draw.Draw(m, b, img, image.ZP, draw.Src) draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over) //生成新图片new.jpg,并设置图片质量.. imgw, _ := os.Create("new.jpg") //jpeg.Options{100}设置图片质量 jpeg.Encode(imgw, m, &jpeg.Options{100}) defer imgw.Close() fmt.Println("水印添加结束,请查看new.jpg图片...") }

02
领券