JavaScript:将base64解码为二进制数据

标签 javascript binary base64

我正在尝试使用 Canvas 从视频创建图像,然后将图像发送到 API。

这是我的代码(为简洁起见,省略了大部分内容)

      var image = new Image();
        image.src = canvas.toDataURL("image/png");

      var newFile = new File([atob(image.src)], lorem.png, {
         type: "image/png",
          lastModified: Date.now()
         })

image.src 是一个长字符串,格式似乎是 base64 data:image/png;base64

[数据链接][1]: https://gist.github.com/anonymous/d357e780fa60b2c47490a9f795e34acf

当我尝试使用函数 atob 将数据解码为二进制时,出现以下错误:

Error: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

我不清楚 Base64 数据的哪一部分格式不正确。

最佳答案

您必须删除数据网址的头部。当您将图像放入 image.src 时,其内容类似于 data:image/png;base64,BASE64ENCODEDSTUFF。 显然 data:image/png;base64 不是 base64,因此使用 atob 对其进行解码将会失败。

关于JavaScript:将base64解码为二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42417466/

相关文章:

javascript - Alfresco javascript 搜索不区分大小写

Java 检查标志是否设置为整数

base64 - 在不同的 CSS 文件中使用相同的 base64 图像的 SASS 解决方案?

algorithm - 为什么二进制搜索索引以这种方式计算?

javascript - 在 JS 中进行 Base64 编码并在 PHP 中进行解码时出现变音问题

java - 在 Freemarker 模板中编码 base64

javascript - 如何提取参数的特定部分并将它们放入自己的变量中

javascript - 有没有什么方法可以在不迭代的情况下从对象数组中创建属性数组?

javascript - 在 django 中获取列表值

arrays - 在 Matlab 中反转一个逻辑位