前言
上一篇文章,我们介绍了如何通过 Github + jsDelivr 配置免费 CDN 加速服务,本文我们再来介绍一下,如何在此基础上搭配 PicGo
配置免费图床。
1. 为何要使用图床
在介绍用法之前,我们需要说明一下为什么要使用图床?
图床其实就是用于存储图片的服务器,在我们这里就是 Github
仓库,叫图床可能就是为了听起来高级一点吧!回答为什么要使用图床,其实就是回答为什么要用单独的图片服务器。
关于这个问题,我想用我的个人经历来回答,我编写技术文章一般用VS Code
在本地通过markdown
完成,一篇文章下来,通常都有 10 张左右的截图,放在markdown
文件的同级目录下,然后引用到markdown
文件中。写完校阅没有问题之后,才将文章复制到个人博客、公众号等公众平台,然后再分别一张张的上传图片并完成路径替换。
本来想着,上传图片才几分钟,和编写、校阅本身花的时间相比根本不值一提,麻烦就麻烦点吧,所以就一直没有部署专门的图床。但后来的一件事情让我差点吐血,那就是我有一次迁移博客的时候,图片忘记迁移了,并且删掉了。万幸的是,大部分图片本地还有备份,但只能一张张重新上传,替换路径,然后重新发布,这过程简直要了我的老命!最恼火的是,其中有几篇是即兴的,直接在博客后台编写的,本地没留档,也实在懒得重新截图,索性一怒之下直接连文章一起删了!
这件事之后,我意识到单独的图片服务器还是很有必要的,将图片上传到图床中,然后通过链接来引用图片,方便不说,最起码也不用再担心手残了。当然,图床还有一个不可小视的优点,就是不会占用博客的存储空间和带宽,并且可以被 CDN
加速,提高网站中图片的加载速度。
在寻找解决方案的过程中,我惊喜的发现了Github
+ jsDelivr
+ PicGo
的组合,免费、稳定、高效,于我而言,简直堪称完美!
2. 如何配置图床
配置主要分为两个方面,一个是Github
仓库的配置,另一个是客户端PicGo
的配置,而jsDelivr
无需配置,直接使用即可。
2.1 配置 Github 仓库
首先,我们需要创建一个Github
仓库,用于存储图片,具体做法和上一篇文章一样,名称可以随便取,但必须是公开的,我这里叫image-repo
,创建好的仓库如下图所示:
接下来,访问https://github.com/settings/tokens 页面,创建一个 token
,用于 PicGo
访问仓库。
选择 Generate new token(classic),然后输入密码,如下图所示:
点击 Confirm 按钮,会跳转到如下页面:
过期时间按需设置,也可以设置为永不过期,另外,范围只需要勾选 repo
即可。最后,点击 Generate token 按钮,就会生成一个token
,如下图所示:
该 token
只会在创建时出现一次,保存这个值,以备后续使用。
2.2 安装配置 PicGo
接下来,到https://github.com/Molunerfinn/PicGo/releases下载并安装最新稳定版的PicGo
,我目前对应的是v2.3.1
。
根据自己的系统下载对应的版本,安装完成后打开PicGo
,会出现如下界面:
点击图床设置,选择GitHub
,填写相关配置,如下图所示:
到这里PicGo
就安装配置成功了。不过还有一点小瑕疵,一个是图床设置中有太多我暂时用不上的图床,比较碍眼,如腾讯云COS
、阿里云OSS
等,另一个是上传的图片没有重命名,容易产生命名冲突。因此,我们还需要进行最后一步简单的设置,启用时间戳重命名,然后显示的图床只保留GitHub
。
2.3 插件支持
大部分情况下,安装配置到这一步,已经完全够用了,但是,有些时候,我们希望上传的图片能够自动按日期分目录存储,并且文件要以文件的 MD5
值命名,然而,PicGo
默认不支持,这时就需要通过picgo-plugin-rename-file
插件来增强功能了。
插件安装完成后,点击插件上的齿轮,配置文件格式,我的是{y}{m}{d}/{hash}
,如下图所示:
使用该插件就需要把刚启用的时间戳重命名关闭掉,不然二者会冲突!
到此插件也安装完成了,去上传图片试试效果吧,更多的插件及用法可到https://github.com/PicGo/Awesome-PicGo查找。
3. 如何使用图床
3.1 图片上传
PicGo
的图片上传非常简单直观,上传区支持拖拽上传或者点击区域打开文件夹上传,还支持剪贴板图片上传和通过 URL 上传等功能。如果图片已存在于剪贴板的话,也可直接使用快捷键Ctrl + Shift + P
快速完成,然后就可以在相册看到刚上传的图片了。
3.2 图片引用
默认情况下,上传完成后,PicGo
会自动将如下形式的图片链接复制到剪贴板。
![](https://cdn.jsdelivr.net/gh/ZShijun/image-repo/20240419/a180838172275072e17ac25f0c599ffe.png)
引用时,直接到markdown
文件中粘贴就可以了,当然,你也可以根据具体的应用场景设置不同的格式,如HTML
、URL
等,怎么样,是不是很方便?
结语
当然,该方案也并非完美无瑕,比如图床毕竟是基于Github
存储的,所以上传速度可能会受影响,不过我目前用着还行;另外,删除相册中的文件时,不会自动删除Github
仓库中的文件,也没有找到相关的插件支持,因此,如果有洁癖的话,就需要手动到Github
仓库中删除了。
不过,瑕不掩瑜,和其它图床技术相比,考虑到免费、稳定、高效的特点,这已经是很令人惊喜的结果了。
根据volcanolinz
大佬的热心留言,PicGo
可换成PicList
,本人已经换上了,确实用起来更香。PicList
是基于PicGo
实现的,包含了PicGo
所有的功能,并在此基础上做了扩展,如解决了删除本地相册文件时,Github
仓库不会自动同步删除的问题。另外,PicList
还支持从PicGo
一键迁移,非常方便,因此隆重推荐给大家!
评论7
volcanolinz
针对结语部分中需要同步删除Github仓库中图片的需求,可以试试PicList这个软件,基于PicGo二次开发,我目前用的这款,也很好用
老朱
👍这个好,回头试试
老孙
还是不要难为`jsdelivr`了.就是因为很多人拿来做图床才被国内封了又封.指不定什么时候就抽风访问不到.
老朱
还有这事?之前没怎么关注,不过个人认为封了又封应该跟图床关系不大,图床本身是Github承担的,jsdelivr只是对静态文件加速,对jsdelivr而言,不管静态文件是图片还是JS、CSS,都是布局AI有意义的数据,他们不会拒绝的,就像Github不会拒绝图片一样
老孙
图片所需的流量大.之前有很多涩情的内容也是通过jsdelivr加速的...
Net
这个会不会很慢呢?
老朱
我这篇文章,还有后面的文章用的就是这个方案,我自己用着感觉不慢,不知道别人访问慢不慢,你试试看,然后告诉我一下😀