22. 实现Pic

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 解析URL 输入URL后,会进行解析(URL的本质就是统一资源定位符) URL一般包括几大部分: protocol...
    小超人的前端之路阅读 872评论 0 1
  • 1.UC浏览器是首款基于大数据分析用户兴趣,融入信息流式交互体验,为用户提供个性化阅读体验的手机浏览器,具有资讯阅...
    黄花菜已凉阅读 3,406评论 0 5
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,932评论 0 3
  • 女儿拿一篇她师姐的文给我看。初中生的文笔,没有华丽的辞藻,平实地记叙了一次春节前的贫困山村之行,着重写了同样在赤贫...
    兰兮阅读 821评论 41 37
  • 听说人在死前的一秒钟,他的一生会闪过眼前。首先,其实不是一秒钟,而是延伸成无止境的时间,就像时间的海洋。 世界这么...
    G_DoFlamingo阅读 381评论 0 0

友情链接更多精彩内容