Smms+PicGo实现Typora插入图像时上传到线上

570 阅读4分钟

在编辑Markdown文档的时候,最为头疼的事情就是插入图片的问题了。我最经常使用Typora来编辑Markdown文档,粘贴图片的时候Typora默认会将图片保存到电脑的%APPDATA%\Typora\typora-user-images路径下(Windows的默认路径,当然也可以指定其他的路径,比如可以指定保存到当前Markdown文件所在的目录下)。

问题发生在最近,我更换了一台新的电脑,将原本的文档从坚果云上同步到新的电脑之后,发现文档中的图片直接无法查看了。当然,这是非常合理的情况,因为图片是存储在旧的电脑上的,新电脑当然无法查看旧电脑的内容。后来只能够从旧电脑上将图像目录直接拷贝到新的电脑上,由于图片实在是太多了,还包含很多无用的图片,拷贝起来实在是太费时间了,并且每次到一台新的电脑上都要这样操作,确实是非常的麻烦,必须想办法解决这个问题。

首先我想到了图床,可以先将图片上传到图床上再使用图片的链接进行访问,不过这依然有点麻烦,就比如电脑上的一张截图吧,首先要将截图保存在电脑上,然后再上到图床的网页进行上传,最后复制上传后返回的地址来粘贴到文档中,这样一顿操作过后,很有可能之前写文档的思路就断了,而且对于截图比较多的文档来说确实非常繁琐。

正因如此,我开始寻找Typora自动上传图片的方法,最后将解决方案定为了使用smms图床以及PicGo上传文件到图床并配置Typora达到自动上传的目的

注册Smms图床

Smms图床的首页是:sm.ms/,进入首页,选择右上角的User并选择Login来登录smms图床,如果尚未有用户,可以选择Register来注册一个用户,注册完成之后登录,并且在邮箱之中收到的激活邮件中点击激活连接,成功之后就能够正常的使用啦。

登录smms

成功的登录后,一般会进入Dashboard界面,如果没有的话,可以在图床首页选择右上角的User并选择Dashboard来进入。

进入smms的Dashboard界面

在最左侧的导航栏中选择API Token进入API Access界面。

进入API Token界面

这个界面中如果Secret Token后并没有内容,则可以点击Generate Secret Token按钮来生成一个token,随后复制并保存下来这个token,后面会需要用到(如果已经有token则可以直接保存,不用再重新生成)。

生成token

安装PicGo

这里首先放一下PicGo这个软件的官方介绍,PicGo是一个开源的用于快速上传图片并获取图片URL链接的工具。

PicGo的Github仓库的地址为:github.com/Molunerfinn…

PicGo的官方介绍

这里我推荐使用node来进行安装,在命令行中执行如下命令就可以安装PicGo

# -g指令代表全局安装
$ npm install picgo -g

下图为安装结果:

npm安装picgo

安装完成之后就可以测试安装是否正确了,执行如下命令:

$ picgo --version
1.4.21

如果一切正常,就可以进入关键的一步:配置PicGO,只需要简单的几步就可以快速的完成PicGo的配置,首先需要在命令行中键入如下内容:

$ picgo set uploader

在这之后可以看到如下图所示的内容

配置uploader

使用上下方向键选择smms作为图床,按下回车键进入下一步,首先会出现api token选项,输入在注册Smms图床步骤中最终获得的token,按下回车键,就可以看到配置完成的提示了!

输入token完成配置

配置完成后可以测试一下PicGo的功能是否正常,随便在电脑上找到一张图片,在命令行中键入picgo upload "<filepath>"就可以上传图片了。

测试picgo功能是否正常

如果输出是类似上图所示的内容,那么就证明PicGo已经可以正常使用了,接下来可以进入最后一步:配置Typora

配置Typora

打开Typora,选择“文件->偏好设置”(或者使用ctrl + ,)进入设置界面,选择图像,并配置成如下图所示的样子,如此就算是配置完成了!

配置Typora

尾声

在配置完成之后,Typora在每次粘贴图片的时候就会自动上传图片了,上传图片的过程如下图所示

Typora正在上传图片

图片上传完成之后,Typora会自动将路径转换为文件上传后的路径。

从上面的图片也可以发现,如果这个图片不是本地图片,而是在剪切板中的图片(例如QQ截图),那么Typora会首先在%APPDATA%\Typora\typora-user-images路径中保存图片文件,再用这个图片文件进行上传,因此,在使用了这个上传图片文件的方法后,可以定期清理上述文件夹中的内容。