代码之家  ›  专栏  ›  技术社区  ›  Ajey

Golang实时将base64数据转换为图像并发送响应

  •  6
  • Ajey  · 技术社区  · 9 年前

    img html标记如下:

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg==
    "/>
    

    Demo

    我正在摆弄一个小的golang程序。

    例子:

    http.HandleFunc("/getImage", imageHandler)
    
    func image(res http.ResponseWriter, req *http.Request) {
        data := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg=="
        // Data is the base64 encoded image
        dec := b64.NewDecoder(b64.StdEncoding, data)
        res.Header().Set("Content-Type", "image/png")
        io.Copy(res, dec)
    }
    
    1 回复  |  直到 6 年前
        1
  •  10
  •   Cerise Limón    9 年前

    问题中的代码很接近。试试这个:

    data := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg=="
    // The actual image starts after the ","
    i := strings.Index(data, ",")
    if i < 0 {
        log.Fatal("no comma")
    }
    // pass reader to NewDecoder
    dec := base64.NewDecoder(base64.StdEncoding, strings.NewReader(data[i+1:]))
    
    推荐文章