从HTTP Golang中的字符串提供图片

时间:2019-02-07 15:52:10

标签: image http go

我需要使用HTTP GET显示图像,但事实是我只能使用String作为响应主体。

例如(headers:image / png,body:Aeacxxffsaf(编码表示形式或其他形式))

或多或少像这个网络https://codebeautify.org/base64-to-image-converter,但我希望在使用http GET时将字符串输出到图像中。

此处有一些代码段解释:

//string that is generated from image (encoded)
encString := "iVBORw0KGgoAAAANSUhEUgAAANIAAAAzCAYAAADigVZl..."

//set http headers to png
//and assign the encString to the body

有什么办法吗?通过仅使用字符串来投放图片

对不起,如果我的问题有点令人困惑,但这是我所能描述的最好的问题,因为几天前我一直在寻找答案

2 个答案:

答案 0 :(得分:1)

您可以像处理其他任何内容一样进行操作,只需先解码base64。

func handler(w http.ResponseWriter, r *http.Request) {
    encString := "iVBORw0KGgoAAAANSUhEUgAAANIAAAAzCAYAAADigVZl..."
    bytes, err := base64.StdEncoding.DecodeString(encString)
    if err != nil {
        // todo
    }
    w.Header().Set("Content-Type", "image/png")
    _, err = w.Write(bytes)
    if err != nil {
        // todo
    }
}

但是,如果要在浏览器中显示它而不进行解码,则必须进行一些客户端黑客攻击。

答案 1 :(得分:0)

这取决于您在另一侧的理解方式。 编码的b64,b32,字节数组等字符串均表示相同的字节模式。 要使其在另一侧显示为图像,一切都取决于您如何从另一侧解释它。

编辑:

我明白你的意思了。看看image/jpeg package

可悲的是,我现在没有代码片段可与您共享,但是有了它,您应该能够将图像加载到缓冲区上并对其进行解码以获得image.Image对象。

之后,您可以使用该image.Image对象将其写入响应主体。遗憾的是,我暂时无法提供代码段,但请告诉我它是否对您有用。

请记住设置作家的适当标题。

w.Header()。Set(“ Content-Type”,“ image / jpeg”)