golang学习---练习0

题目来自此处
第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果

golang学习---练习0_第1张图片

golang 解答
把下边两图合并,其中一个透明

golang学习---练习0_第2张图片
1.png

golang学习---练习0_第3张图片
20130727160521968.png

得到


golang学习---练习0_第4张图片
123.png
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())
}

你可能感兴趣的:(golang学习---练习0)