当前位置: 首页 > 面试题库 >

去base64图像解码

宰父飞白
2023-03-14
问题内容

我目前正在从画布上获取像这样的base64图像数据URL(不是dataURL我只是为了显示字符串的样子)

data:image/png;base64,iVkhdfjdAjdfirtn=

我需要解码该图像以检查图像的宽度和高度

    dataurl := strings.Replace(req.PostFormValue("dataurl"), "data:image/png;base64,", "", 1)

    reader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(dataurl))
    c, _, err := image.DecodeConfig(reader)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(c.Width)

但是我在尝试解码配置时收到错误

Unknown image format

因此,是的,我制作dataurl的方式一定是错误的,但无法弄清楚该怎么做。我也尝试传递完整的dataurl(with data:image
…)仍然没有成功


问题答案:

您所拥有的是数据URI方案,有关如何对其进行解码的信息以及更多有关此问题的信息,请参见此问答:**

但是请注意,image.Decodeconfig()这只会解码在调用此函数之前注册的图像格式,因此您需要预先注册图像格式处理程序。这可以通过类似的导入来完成

import _ "image/png"

有关更多信息,请参见的doc文件image。或者,如果您知道确切的格式(例如,在示例中为PNG),则可以直接使用png.DecodeConfig()

因此它对您不起作用,因为您的实际编码图像为PNG格式,但是您没有注册PNG格式处理程序,因此image.DecodeConfig()不会使用PNG处理程序(因此它将无法对其进行解码=

"Unknown image format")。

还要注意,替换不属于Base64编码映像的前缀是解决该问题的较差解决方案。而是简单地对输入字符串进行切片:

input := "data:image/png;base64,iVkhdfjdAjdfirtn="
b64data := input[strings.IndexByte(input, ',')+1:]

切片字符串甚至不会在内存中复制该字符串,它只会创建一个新的(两个单词)字符串标题。



 类似资料:
  • 我不理解下面代码中用于显示图像的项目

  • 问题内容: 我正在为Firefox / IE构建一个开放式搜索附加组件,并且该图像需要经过Base64编码,因此如何对我拥有的收藏夹图标进行64位编码? 我只熟悉PHP 问题答案: 据我记得,图像数据有一个xml元素。您可以使用此网站对文件进行编码(使用上载字段)。然后,只需将数据复制并粘贴到XML元素即可。 您也可以这样使用PHP来做到这一点: 使用Mozilla指南获取有关创建OpenSear

  • 我想下载一个JS中的图像,它是bas64编码的。为此,我首先解码了图像并尝试下载它。文件正在下载,但下载文件中的内容什么都不是。 编码后的图像就像: data: Image/png; bas64, iVBORw0KGgoAAAANSUhEUGAAAAUAAAFCAYAAACNbyblAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAABJ

  • 我得到的图像是base64编码的字符串前端,我必须对它们进行解码,并将它们保存为服务器中的图像。图像可以是任何格式——png、gif或jpeg。这部分很好用。但有时用户上传的图片可能会非常大,所以我试图从后端压缩它们,这部分失败得很惨。 我有两个功能。一个用于将base 64字符串转换为图像,另一个用于压缩它。 这是将字符串转换为图像的函数。 这就是压缩的功能: 但是上面的函数不做任何压缩,它会抛

  • 问题内容: 纯粹出于好奇,Base64图像嵌入在哪些浏览器中起作用?。 我意识到对于大多数事情来说,通常不是一个好的解决方案,因为它会增加页面的大小-我很好奇。 一些例子: HTML: CSS: 问题答案: 更新 现在,所有主要浏览器都支持数据URI。从版本8开始,IE也支持嵌入图像。 现在,以下Web浏览器支持数据URI: 基于壁虎,例如Firefox,SeaMonkey,XeroBank,Ca

  • 我使用下面的脚本从MongoDB中获取JSON文件,对其进行解析,然后将其插入到Oracle表中。 > 该脚本可以正确地将所有值插入到Oracle表中。这包括值Photo,它是一个base64 formate的图像,它比32KB大得多。 表Appery_Photos中的列Photo是CLOB类型,而列DecodedPhoto是BLOB类型。 问题在于行,我用它将CLOB解码为BLOB。函数base