图像blob到base64

时间:2015-12-04 02:38:01

标签: image go base64 blob

我试图从数据库中读取blob并将其作为base64图像显示给浏览器(我认为这是显示它的唯一方法)

我的代码如下

    rows, err := database.Conn.Query("SELECT a.id, a.name, a.creationdata, b.logo, c.name FROM guilds a, cloaka_guilds b, players c WHERE a.ownerid = c.id AND b.guild_id = a.id ORDER BY creationdata DESC")
    if err != nil {
        return nil, err
    }
    guild_list := []*Guild{}
    for rows.Next() {
        guild := &Guild{}
        rows.Scan(&guild.Id, &guild.Name, &guild.Creationdata, &guild.Logo, &guild.Owner)
        guild.Logo_str = base64.StdEncoding.EncodeToString(guild.Logo)
        guild_list = append(guild_list, guild)
    }
    return guild_list, nil

b.logo包含一个image []字节。我很确定。更确定IntelliJ IDEA在数据库行上显示

  

88x88图片1.68K PNG

在浏览器上使用

之类的东西进行渲染
<img src="data:image/jpeg;base64,[[ $element.Logo ]]">

但是因为我得到了这个

,所以显然是错误的
<img src="data:image/jpeg;base64,[137%2080%2078%2071%2013%2010%2026%20.........]">

至于struct guild.Logo是[]字节类型

1 个答案:

答案 0 :(得分:1)

要将图像显示为base64,您不需要[[个符号。这是一个example

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQV....

here is how it will look

查看从数据库中获取的数据。它应该是byteArray或者你可以转换为byteArray的东西。有了byteArray,你可以用以下代码对其进行base64编码:

sEnc := b64.StdEncoding.EncodeToString(byteArr)

看一下我的 Go playground ,看看我是如何得到上面提到的base64图像的。