【插件发布】Linux Image Rendering Fix — 修复 Linux 下 Obsidian 图片无法渲染的问题

Linux Image Rendering Fix — 修复 Linux 上的图片无法显示问题

仓库: GitHub

安装: Community Plugins → Browse → Linux Image Rendering Fix


问题

Linux 用户(Ubuntu、Pop!_OS、Linux Mint、Fedora 等)已经被 Obsidian 无法显示本地图片的问题困扰了三年(自 v1.0.0 起)。图片位置只显示一个破损图标或一片空白。应用层面至今未修复。

根本原因:

  1. app:// 协议损坏 — Linux 上的 Electron/Chromium 无法解析包含非 ASCII 字符(表情符号、变音符号、西里尔字母、中文、日文、韩文等)的路径。
  2. 缺少图片编解码器 — 某些 Linux 的 Electron 构建(尤其是 Snap 和 Flatpak)不含 PNG、JPEG、WebP 的解码器,导致 status 0 或解码失败。

受影响的安装包:SnapFlatpakDEB。AppImage 稍稳定但也不能幸免。ARM 设备同样受影响。

这是 Electron/Chromium 的上游 bug。Obsidian 团队无法直接修复。

解决方案

插件通过 MarkdownPostProcessor 拦截 Markdown 渲染,找到每一个 <img> 元素,使用 vault.adapter.readBinary() 直接从磁盘读取图片文件的二进制数据,然后用 Blob URL(blob:...)替换 src。这样就完全绕过了损坏的 app:// 协议。

测试环境: Ubuntu 24.04(DEB 包)。

其他发行版(Pop!_OS、Linux Mint、Fedora 等)和安装包格式(Snap、Flatpak、AppImage)同样适用 — 根本原因在 Electron/Chromium 的上游 bug,与具体发行版无关。

功能

  • 自动处理 — 打开页面、切换标签页、修改文件时自动替换图片
  • 广泛格式支持: PNG、JPEG、GIF、WebP、SVG、BMP、ICO
  • Reprocess Images 命令 — 手动刷新当前视图的图片
  • 安全设计: 仅在 vault 内工作,零网络请求
  • 零配置: 安装即用

限制

  • 仅桌面端(Linux)。 isDesktopOnly: true

许可证

LGPL-3.0 — 自由开源软件。