喜迎国庆,用红旗头像为祖国庆生
逢国庆佳节之际,看到朋友圈里突然出现了很多带红旗的头像,爱国之心油然而生!
身为 PHPer,我用 Golang
先上效果图:
制作原理不复杂,将头像作为背景,然后再叠加红旗就行了。
只要注意图片的尺寸一致即可。
直接上代码:
// 公众号:Code Demo 大全// 作者:Niel// 原文链接可以直接在线查看代码package mainimport ("fmt""image""image/draw""image/png""os""path")func main() {// 获取当前工作目录pwd, _ := os.Getwd()file, err := os.Create(path.Join(pwd, "dst.png"))if err != nil {fmt.Println(err)}defer file.Close()// 300 * 300 的背景头像图backgroundImageFile, err := os.Open(path.Join("avatar.png"))if err != nil {fmt.Println(err)}defer backgroundImageFile.Close()backgroundImage, _ := png.Decode(backgroundImageFile)// 300 * 300 前景红旗图foregroundImageFile, err := os.Open(path.Join("hat1.png"))if err != nil {fmt.Println(err)}defer foregroundImageFile.Close()foregroundImage, _ := png.Decode(foregroundImageFile)// 初始化一个画布newPng := image.NewRGBA(image.Rect(0, 0, 300, 300))// 先绘制背景图draw.Draw(newPng,newPng.Bounds(),backgroundImage,backgroundImage.Bounds().Min,draw.Over,)// 再绘制前景图draw.Draw(newPng,newPng.Bounds(),foregroundImage,foregroundImage.Bounds().Min.Sub(image.Pt(0, 0)),draw.Over,)if err := png.Encode(file, newPng); nil != err {fmt.Println("output new image with error: ", err)}}
这只是一个简单的实现,相信广大 gopher 在此基础上,制作出更加个性化和有趣的头像。
附上资源图片:
在线代码地址:https://goplay.tools/snippet/b-l99hdCrWu