Linux Image Rendering Fix — 修复 Linux 上的图片无法显示问题
仓库: GitHub
安装: Community Plugins → Browse → Linux Image Rendering Fix
问题
Linux 用户(Ubuntu、Pop!_OS、Linux Mint、Fedora 等)已经被 Obsidian 无法显示本地图片的问题困扰了三年(自 v1.0.0 起)。图片位置只显示一个破损图标或一片空白。应用层面至今未修复。
根本原因:
app://协议损坏 — Linux 上的 Electron/Chromium 无法解析包含非 ASCII 字符(表情符号、变音符号、西里尔字母、中文、日文、韩文等)的路径。- 缺少图片编解码器 — 某些 Linux 的 Electron 构建(尤其是 Snap 和 Flatpak)不含 PNG、JPEG、WebP 的解码器,导致 status 0 或解码失败。
受影响的安装包:Snap、Flatpak、DEB。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 — 自由开源软件。