飞雪无情

喜迎国庆,用红旗头像为祖国庆生

逢国庆佳节之际,看到朋友圈里突然出现了很多带红旗的头像,爱国之心油然而生!

身为 PHPer,我用 Golang

先上效果图:

Image

制作原理不复杂,将头像作为背景,然后再叠加红旗就行了。

只要注意图片的尺寸一致即可。

直接上代码:

// 公众号:Code Demo 大全// 作者:Niel// 原文链接可以直接在线查看代码package main
import ( "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 在此基础上,制作出更加个性化和有趣的头像。

附上资源图片:

Image

在线代码地址:https://goplay.tools/snippet/b-l99hdCrWu

Image