22. 实现Pic
2019-04-15 14:26发布
生成海报
package main
import (
"fmt"
"image"
"bytes"
"image/png"
"encoding/base64"
)
func Pic(dx, dy int) [][]uint8 {
//dx元素长度,dy整个slice长度
s := [][]uint8{}
ss := []uint8{}
for i := 0; i < dx; i++ {
ss = append(ss, 45)
}
for i := 0; i < dy; i++ {
s = append(s, ss)
}
return s
}
func Show(f func(int, int) [][]uint8) {
const (
dx = 256
dy = 256
)
data := f(dx, dy)
m := image.NewNRGBA(image.Rect(0, 0, dx, dy))
for y := 0; y < dy; y++ {
for x := 0; x < dx; x++ {
v := data[y][x]
i := y*m.Stride + x*4
m.Pix[i] = v
m.Pix[i+1] = v
m.Pix[i+2] = 255
m.Pix[i+3] = 255
}
}
ShowImage(m)
}
func ShowImage(m image.Image) {
var buf bytes.Buffer
err := png.Encode(&buf, m)
if err != nil {
panic(err)
}
enc := base64.StdEncoding.EncodeToString(buf.Bytes())
fmt.Println("IMAGE:" + enc)
}
func main() {
Show(Pic)
}
在浏览器运行,可以看到运行结果。
实现的图片
可在下面地址输入此例代码,并运行和分析。
https://tour.golang.org/welcome/1
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮