我需要使用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
有什么办法吗?通过仅使用字符串来投放图片
对不起,如果我的问题有点令人困惑,但这是我所能描述的最好的问题,因为几天前我一直在寻找答案
答案 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”)