如何将原始二进制数据转换为 blob 并将其显示在 img 标记中?

2024-03-20

我正在 Electron 和 Svelte 中制作梦想日记应用程序。我有一种自定义文件格式,其中包含标题、描述和一张或多张图像。看:

程序输入

文件输出

当我需要的时候,我可以打电话ipcRenderer.invoke()在主进程中读取文件,然后返回该文件以在渲染器进程中检索它(不用担心,我正在使用async await确保我不只是得到一个承诺。另外,对于我的测试,我只发回代表图像的 Uint8Array).

在尝试显示图像但失败后,我决定检查一下我是否按预期接收了信息。我将响应按原样发送回主进程并将其写入文件。当我在“画图”中打开该文件时,它就会显示出来。

所以,信息是正确的。这是我尝试使用以下方式显示图像的代码:

within <script>

let src;
onMount(async () => {
  let a = await ipcRenderer.invoke("file-read");
  console.log(a);
  let blob = new Blob(a, {type: 'image/png'});
  console.log(blob);
  ipcRenderer.send("verify-content", a); // this is the test I mentioned, where it was written to a file
  src = URL.createObjectURL(blob);
});

在身体里

{#if src}
  <img src={src} />
{/if}

我还尝试了另一种方式:

within <script>

onMount(async () => {
  let a = await ipcRenderer.invoke("file-read");
  console.log(a);
  let blob = new Blob(a, {type: 'image/png'});
  console.log(blob);
  ipcRenderer.send("verify-content", a);
  const img = document.createElement("img");
  img.src = URL.createObjectURL(blob);
  img.onload = function() {
    URL.revokeObjectURL(this.src);
  }
  document.getElementById("target").appendChild(img);
});

在身体里

<div id="target"></div>

然而,这就是我得到的一切:

它不显示。我怎样才能显示这个图像?我发现的所有其他“blob to img”示例都使用了type="file" <input />标签。如果可能,我想避免使用 Base64 数据 URI。谢谢。


事实证明,当我用它制作一个 blob 时,我必须将 Uint8Array 包装在一个数组中(wtf)。

let blob = new Blob([a], {type: "image/png"});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将原始二进制数据转换为 blob 并将其显示在 img 标记中? 的相关文章

随机推荐

  • 如何在 SDL 中创建颜色渐变

    SDL 没有这样的功能 很好奇过去是否有人做过并且不介意引导我走向正确的方向 我想在两种颜色之间创建渐变以反映在矩形的高度上 只需在所需的 y 位置上进行循环即可 通过在渐变的端点颜色之间进行插值来计算所需的颜色 Call SDL SetR
  • JSON解析多个key

    我有以下 JSON 字符串 var jsonString J 4 0 M J 5 0 N 如果我使用 jquery parseJSON jsonString 解析它 我得到 J 5 0 N 问题 1 jsonString是否格式错误 2 是
  • 将方法提升为 Scala 中的函数值

    Scala 库是否提供将给定类型的方法提升为函数值的支持 例如 假设我想举起String length 我可以写 val f String gt Int length or val f s String gt s length 然而 这种语
  • Python 中的视频和语音聊天可操作性

    我正在尝试寻找有关 Python 中视频和语音聊天可操作性的资源 有人知道一些好的资源或示例项目吗 任何帮助将不胜感激 如果你想要更高层次的东西你可以尝试Empathy http live gnome org Empathy 它具有 pyt
  • ElasticSearch 映射不起作用

    我正在尝试为各个字段使用不同的分析器设置 ElasticSearch 索引 但是 我似乎找不到设置特定领域分析器的方法 这是我创建 测试 索引的方法 curl XPOST localhost 9200 twitter curl XPUT h
  • 标记活动 Clear Top 会破坏目标活动而不是创建它

    我正在观察 Intent FLAG ACTIVITY CLEAR TOP 的行为 例如我有三项活动 A B C 现在流程是A gt B gt C 现在 当我使用以下代码从 C 开始使用此标志时 Intent intent to a new
  • hadoop和hbase的最新兼容版本

    我必须在4台机器上安装hadoop和hbase 我找到了最新版本hadoop 2 6 0 and hbase 0 98 9 hadoop2 bin 1 它们兼容吗 2 我应该如何在4台机器上安装hbase和hadoop 即有多少个maste
  • 组合枚举 C++

    在我的项目中 我有几个与此类似的枚举声明 enum Comparison LT lt GT gt EQ LTEQ lt GTEQ gt NEQ enum Arithmetic ADD SUB MUL DIV MOD 我想将其中的几个组合成一
  • 如何注入 jQuery 并在同一个书签中使用它?

    我可以使用以下书签成功地将 jQuery 注入到页面中 javascript void function doc if typeof jQuery undefined var script jQuery document createEle
  • Scala/Java 枚举

    我读了this https stackoverflow com questions 1321745 scala doesnt have enums what to use instead of an enum and this https
  • 将 Matplotlib 图转换为 NumPy 数组,没有任何边框/框架或轴

    我正在尝试将 Python 生成的图像与文件中的图像 照片进行比较 到目前为止 最好的方法是在 Matplotlib 中生成一个图形 然后将其转换为 numpy 数组 并将这些值与我从图像中获得的值进行比较 我得到了以下代码 将 Matpl
  • 对不完整类型的引用

    根据 C 03 标准 引用不完整类型是否有效 我不知道有任何实现将引用实现为非空指针以外的任何其他实现 因此这样的代码应该可以工作 但是 我想知道对不完整类型的引用是否符合标准 我希望得到带有引用和 C 标准参考的答案 据我所知 C 标准没
  • jQuery 下一个有特殊类型子元素的兄弟

    我的 HTML 有一个包含许多同级元素的容器元素div元素 每个元素包含一个contenteditable p 这些兄弟姐妹div然而 被其他人 打断 div其中不包含可编辑元素 目前对我来说挑战的是如何 跳过 这些干扰div使用左右箭头键
  • 如何使用单个删除从对象中删除多个属性?

    我有以下对象 var myArr one 1 two 2 three 3 four 4 five 5 我想立即从该对象中删除三个属性 例如 delete myArr one three five 但它正在失败 我是否必须对每个属性执行独立删
  • 获取创建的表名

    我正在尝试创建一个event trigger 每当表已创建 当发生这种情况时 我想插入到一个表中 该表有 2 列id and tablename 创建的表的名称 阅读文档我无法找到如何获取表名 到目前为止我有这个 CREATE OR REP
  • 使用facet_grid将“标题”添加到我的因素中

    我想使用 ggplot2 为我的因素添加文本 标题 例如 对于来自 reshape2 库的数据 library reshape2 library ggplot2 ggplot tips aes x total bill y tip tota
  • 如何将Java时间戳转换为ms access Date?

    我想将 java 时间戳插入到 msaccess 数据库中 但收到下面列出的错误 ms access 字段已设置为 DATE 数据类型 任何建议将不胜感激 谢谢 这是我的 DAO 类方法 public void addSale String
  • 将用户定义的表传递给存储过程

    我有一个用户定义表 我正在将其从存储过程中传递到存储过程中 DECLARE tmpInput MyTableType Table is populated from an INPUT XML exec ValidateInputXML SE
  • 向下滚动时标题会发生变化(jQuery)

    TechCrunch 最近重新设计了他们的网站 他们有一个可爱的标题 当你向下滚动时 它会缩小为更薄的品牌版本 你可以在这里明白我的意思 http techcrunch com http techcrunch com 我将如何创建这样的东西
  • 如何将原始二进制数据转换为 blob 并将其显示在 img 标记中?

    我正在 Electron 和 Svelte 中制作梦想日记应用程序 我有一种自定义文件格式 其中包含标题 描述和一张或多张图像 看 程序输入 文件输出 当我需要的时候 我可以打电话ipcRenderer invoke 在主进程中读取文件 然