it编程 > 编程语言 > rust

Tauri+Vue3应用中,打包后本地图片无法显示,如何解决?

23人参与 2025-03-29 rust

tauri+vue3应用中,打包后本地图片无法显示,如何解决?

tauri、vue3及markdown解析工具中的图片渲染问题及解决方案

在使用tauri、vue3和markdown-it构建的markdown解析器中,开发模式下图片显示正常,但打包后却无法显示。 即使路径已修正为https://tauri.localhost/img/xxx.png,由于安全策略限制,前端仍然无法访问本地图片资源。

尝试修改tauri.conf.json中的csp配置和tauri.allowlist.fs,允许访问本地文件系统,但问题依然存在。

最初尝试通过tauri的fs api读取本地二进制图像文件,并使用window.btoa将其转换为base64字符串,再设置img标签的src属性。然而,无论是后端读取文件传递到前端,还是前端直接使用fs读取,图片都无法显示。

为排查问题,创建了一个简化demo,直接在vue组件中读取本地图片。使用readbinaryfile读取图片数据,并尝试使用window.btoa转换为base64,但依然无效。

最终解决方案:放弃window.btoa,直接使用blob对象。将读取到的二进制数据(uint8array)使用new blob([contents], { type: "image/png" })创建blob对象,然后使用url.createobjecturl(blob)生成url,并赋值给img标签的src属性。 此方法成功解决了图片显示问题。之前blob方法失败可能源于csp配置错误或rust后端数据传递问题。

关键代码片段:

let img_path = "e:/myprojects2/tauri_vue/mdren/img/a-1-01.png";
const contents = await readbinaryfile(img_path);
let blob = new blob([contents], { type: "image/png" });

async function reloadimg() {
  console.log("function called");
  let img_element = document.queryselectorall("#img-to-remove");
  console.log(img_element);
  img_element.foreach(async (element) => {
    element.src = url.createobjecturl(blob);
  });
}
登录后复制

以上就是tauri+vue3应用中,打包后本地图片无法显示,如何解决?的详细内容,更多请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

豆包ai编程在线入口

03-29

后端开发语言性能PK:哪种语言能最大化资源利用率?

03-29

后端开发语言性能PK:哪种语言及其框架能最有效利用计算机资源?

03-29

编程语言的运行时机制详解:Java、Go、Rust、Python及C语言的运行时环境究竟是什么?

03-29

后端开发语言性能PK:哪种语言的资源利用率最高?

03-29

Go还是Rust?用哪种语言才能优化我的Node.js CLI程序性能?

03-29

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论