本文共 2011 字,大约阅读时间需要 6 分钟。
需求,将背景图和二维码图合成一张图片
1.准备两张图
300*300的图
256*256的图
2.准备功能方法
package mainimport ( "image" "image/draw" "image/jpeg" "image/png" "os")func main() { //简单合成图 createImg()}func createImg() { //背景图 //如果是windows 换成c:/1.jpg imgb, _ := os.Open("/Users/dong/Desktop/1.jpg") img, _ := jpeg.Decode(imgb) defer imgb.Close() //添加图 //如果是windows 换成c:/1.jpg wmb, _ := os.Open("/Users/dong/Desktop/2.png") watermark, _ := png.Decode(wmb) defer wmb.Close() //坐标偏差,x轴y轴,这个自己算一下 offset := image.Pt(22, 22) 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) //如果是windows 换成c:/1.jpg imgw, _ := os.Create("/Users/dong/Desktop/3.jpg") jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality}) defer imgw.Close()}
3.效果如图
17:00
第二版动态带计算位置,默认设置集中,可以自行调整位置
package mainimport ( "image" "image/draw" "image/jpeg" "image/png" "os")func main() { //简单合成图 createImg()}func createImg() { //背景图 //如果是windows 换成c:/1.jpg backgroudImgFile, _ := os.Open("/Users/dong/Desktop/1.jpg") backgroudImg, _ := jpeg.Decode(backgroudImgFile) defer backgroudImgFile.Close() backgroudBound := backgroudImg.Bounds() //x轴坐标总数 backgroudX := backgroudBound.Size().X //y轴坐标总数 backgroudY := backgroudBound.Size().Y //添加图 //如果是windows 换成c:/1.jpg centerImgFile, _ := os.Open("/Users/dong/Desktop/2.png") centerImg, _ := png.Decode(centerImgFile) defer centerImgFile.Close() centerBound := centerImg.Bounds() //x轴坐标总数 centerX := centerBound.Size().X //y轴坐标总数 centerY := centerBound.Size().Y //坐标偏差,x轴y轴 计算 newImgX := (backgroudX - centerX) / 2 newImgY := (backgroudY - centerY) / 2 offset := image.Pt(newImgX, newImgY) //x轴坐标总数 m := image.NewRGBA(backgroudBound) draw.Draw(m, backgroudBound, backgroudImg, image.ZP, draw.Src) draw.Draw(m, centerImg.Bounds().Add(offset), centerImg, image.ZP, draw.Over) //如果是windows 换成c:/1.jpg imgw, _ := os.Create("/Users/dong/Desktop/3.jpg") jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality}) defer imgw.Close()}
特殊说明:
如果需要缩放,可以参考
转载地址:http://kfpmf.baihongyu.com/