题目来自此处
第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果
golang 解答
把下边两图合并,其中一个透明
得到
package main
import (
"fmt"
"image"
"image/color"
"image/draw"
"image/png"
"log"
"os"
"time"
)
func main() {
fmt.Println(time.Now())
fSrc, err := os.Open("/Users/pzwu/Desktop/20130727160521968.png")
if err != nil {
log.Fatal(err)
}
defer fSrc.Close()
src, err := png.Decode(fSrc)
if err != nil {
log.Fatal(err)
}
des := image.NewRGBA(src.Bounds())
fSrc1, err := os.Open("/Users/pzwu/Desktop/1.png")
if err != nil {
log.Fatal(err)
}
defer fSrc1.Close()
src1, err := png.Decode(fSrc1)
if err != nil {
log.Fatal(err)
}
draw.Draw(des, des.Bounds(), src, image.Pt(0, 0), draw.Over)
draw.Draw(des, image.Rect(0, 0, 189, 198), src1, image.ZP, draw.Over)
for x := 0; x < des.Bounds().Max.X; x++ {
for y := 0; y < des.Bounds().Max.Y; y++ {
rgba := des.At(x, y)
r, g, b, a := rgba.RGBA()
if r >= 60000 && g >= 60000 && b >= 60000 {
a = 0
des.Set(x, y, color.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)})
}
}
}
fSave, err := os.Create("/Users/pzwu/Desktop/123.png")
if err != nil {
log.Fatal(err)
}
defer fSave.Close()
err = png.Encode(fSave, des)
if err != nil {
log.Fatal(err)
}
fmt.Println(time.Now())
}