登录
首页 >  Golang >  Go问答

golang pic.ShowImage 为什么它不生成图像而是向我发送 base64 值

来源:stackoverflow

时间:2024-04-09 21:42:35 169浏览 收藏

从现在开始,努力学习吧!本文《golang pic.ShowImage 为什么它不生成图像而是向我发送 base64 值》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我用golang学习golang,我的goland有问题吗?需要更改配置信息吗? 我的代码

package main

import (
    "golang.org/x/tour/pic"
    "image"
    "image/color"
)

type Image struct{} //新建一个Image结构体

func (i Image) ColorModel() color.Model { //实现Image包中颜色模式的方法
    return color.RGBAModel
}

func (i Image) Bounds() image.Rectangle { //实现Image包中生成图片边界的方法
    return image.Rect(0, 0, 200, 200)
}

func (i Image) At(x, y int) color.Color { //实现Image包中生成图像某个点的方法
    return color.RGBA{uint8(x), uint8(y), uint8(255), uint8(255)}
}

func main() {
    m := Image{}
    pic.ShowImage(m) //调用
}

我使用 https://tour.go-zh.org/methods/24 并运行 golang 返回一张图片


正确答案


您的代码或您的 goland 没有任何问题。

之所以在go演示上显示图像,是因为go演示本身就支持这一点。这有点像一个功能。

pic.showimage() 没有什么神奇的作用,只是将文本打印到标准输出。它打印 image: 和您传递的图像的 base64 编码数据,编码为 png 图像。 go 演示解释了标准输出,如果输出以 image: 开头,后端会将输出的其余部分解释为图像的 base64 编码形式,生成一个显示该图像的 html 标签。

请参阅此示例来验证:

func main() {
    img := image.NewRGBA(image.Rect(0, 0, 100, 100))
    red := color.RGBA{R: 255, A: 255}
    for i := 0; i < 100; i++ {
        img.Set(i, i, red)
    }

    buf := &bytes.Buffer{}
    if err := png.Encode(buf, img); err != nil {
        panic(err)
    }

    fmt.Println("IMAGE:" + base64.StdEncoding.EncodeToString(buf.Bytes()))
}

在 go 演示上运行此代码将导致(尝试一下:https://go.dev/play/p/N0RQSTBcqdE):

今天关于《golang pic.ShowImage 为什么它不生成图像而是向我发送 base64 值》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>