社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
需求,将背景图和二维码图合成一张图片
1.准备两张图
300*300的图
256*256的图
2.准备功能方法
package main
import (
"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 main
import (
"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://yondu.vip/2019/01/26/WEB9aad981a4ff1d84152e68ace80eddd33/
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!