type
status
date
slug
summary
tags
category
icon
password
目前我的主力笔记软件是[[Obsidian]],配图都是统一存放在同一文件夹 890 Attachments 内,使用[[Paste image rename]]使其与所引用的元文件名称一致,优点是方便跨文件引用以及安全隐私。但存在的弊端也很明显:随着文件数量增多会导致内存占用过大不利于跨平台同步以及迁移麻烦。这时可以考虑 webp 化或者干脆直接图床化。
刚好有朋友遇到这个问题,需要将 Vault 里的全部本地图片转为图床链接,解决思路的话比较清晰,相信大家都能想得到:
  1. 上传全部图片到图床;
  1. 替换文件引用链接。
那就以一个示例文件夹 ob 为例,尝试实现所有图片的图床化。

上传图片

这里我们需要借助一个插件:[[Image auto upload]],可以将图片上传到 PicGo 中配置的图床。
notion image
注意:若勾选最后一个选项,图片上传图床后会被删除!!!
虽然插件只能上传一个文件中的所有图像文件,但也足够让我们打开思路了:那就把图片都丢到一个文件里
文件夹内创建文件 attachments.md,运行这段 python 脚本:
执行后会得到以下效果:
notion image
然后回到 Obsidian 按 Ctrl-P 调出命令面板,执行 Image auto upload Plugin: Upload all images
notion image
这样就能得到全部图片的图床链接。

替换文件引用链接

重新读取 attachments.md,获取图片名与图床链接的对应关系并存储为字典:
接着我们需要来遍历整个 Vault 并进行图片引用链接的替换,首先需要注意的是 Obsidian 存在两种引用内部图片的格式:
  • OB 链接:![[img.png]]
  • MD 链接:![img_name](img.png)
两种格式我们都需要进行替换:
执行完脚本,我们会发现 Vault 内所有的内部图片都转换成了图床链接的形式。
notion image
最后再强调一遍,执行以上操作前务必做好备份!以防操作失误无法挽回!
AList 实现网盘 All in OnePrompt | Python Package Learning Assistant v2
  • Twikoo