Skip to content

博客图片上传方案-使用PicGo上传图片

写博客,上传图片资源是一件很常见的事情。我在去年把博客从自建迁移到Github Pages上,但是总感觉图片上传非常难受。

博客采用Markdown进行编写,需要上传图片时,只能把图片资源放在项目仓库的Static之类的文件夹下,然后再在博客内部进行引用。这种方案非常机械且人肉,上传一张图片大概需要花费30秒的操作时间,效率低且容易出错。


PicGo

前一段时间,我在找类似的解决方案,在Github上看到了PicGo这个工具。

PicGo/PicGo-Core

PicGo 基于Typescript编写,本质上是对接了各个图床的API实现了文件上传的功能。PicGo-Core是核心的命令行工具,同时也是插件化的架构设计。

/**
   * easily mannually load a plugin
   * if provide plugin name, will register plugin by name
   * or just instantiate a plugin
   */
  use (plugin: IPicGoPlugin, name?: string): IPicGoPluginInterface {
    if (name) {
      this.pluginLoader.registerPlugin(name, plugin)
      return this.pluginLoader.getPlugin(name)!
    } else {
      const pluginInstance = plugin(this)
      return pluginInstance
    }
  }

PluginLoader 的实现代码可见:PluginLoader.ts

PicGo的插件本质上就是一个函数,参数为picgo实例,函数的返回值包含了register这个方法,在插件注册后,PicGo这个核心会默认调用register这个方法。我们可以通过getPlugin来获取到插件本身,从而调用插件抛出的其他函数。

代码细节不做过多评价,这套插件的设计值得借鉴,尤其在做一些可扩展性设计的时候,插件式的架构是相对容易的。

我们在Github上,也看到了很多PicGo的插件。Awesome-PicGo


Obsidian

Obsidian是我现在常用的Markdown写作工具,也是插件化式的设计,PicGo和Obsidian也有联动的插件。

Obsidian Image AutoUpload Plugin

因此,结合这两个工具,现在可以实现,将图片拷贝至剪贴板,然后直接粘贴进Obsidian中,即可完成图片的上传以及博文的引用。

以上,这是我现在在用的感觉还算比较优雅的图片上传的方案。

分类 Blog
标签 Blog
本文最后更新于:6/12/2024