博客图床
本文最后更新于:2019年1月8日 下午
原来我的博客使用七牛作为图床,速度挺快但是无法免费使用 https,就想着更换一个图床(其实就是不折腾就难受)。
更换图床有两处较为麻烦:
- markdown 文档图片链接批量替换,并且有时没有规律可循。
- 大量图片上传到新的图床并且获得图片链接地址。
基于以上的考虑我对博客做了如下调整。
图片链接处理
hexo 有个 hexo-asset-image
插件可以自动补全图片全路径,我们只需稍微修改下就可以将图片链接地址查找抛给程序处理,而不用一个个手动替换。
我分别对云存储库和其他图库做了区别,说明如下具体代码修改参见 github 。
云存储
七牛上传时路径可以指定,地址头是固定的,所以上传成功后也就知道图片的外链地址是什么了。
比如:
- 你建立一个存储空间,七牛分给你的测试域名是
xxx.bkt.clouddn.com
- 上传一个图片
test.jpg
到该存储空间,你设置的前缀是myway/test/
- 那么该图片的外链地址就是
http://xxx.bkt.clouddn.com/myway/test/test.jpg
这种类型的图床只需要定义一套自己的上传路径规则就好了,外链地址完全可以自动生成。
相册
其他图床多半是相册类型的,你不能控制外链的格式和名字。
比如:
- 你上传一个
test.jpg
图片到新浪相册 - 查看外链你会发现是
https://wx4.sinaimg.cn/tesdf/bc323245hj23402c0b29.jpg
,完全没有规律可言
这种情况你需要一个源文件名和地址对应表,我使用的是 json 文件。
1 |
|
当然这种需要你的所有源文件名不能重复。
图床选择
七牛
有免费 10G 的存储空间,而且可以自动处理图片加水印什么的。网上有很多批量上传工具,我就不说了,这是我用的脚本代码 qiniu-upload.py。
目前测试用的外链地址取消了,所以也没有办法做图床了。
本地
使用静态博客本身路径存储(要挂一起挂),一般博客(一年更不了几次)完全够用了。
但是图片要保存到 git 中,需要大文件管理,目前我用的 Git LFS。
安装好后执行以下操作初始化:
git lfs install
git lfs track "*.png"
git lfs track "*.jpg"
git add .gitattributes
flickr
我选择这个主要是空间没有限制,api 也很丰富,唯一的缺点就是国内会被屏蔽吧。我一般放的是自己拍摄的照片,也都是自我欣赏所以这点对我没有影响。
准备
申请自己的 API Key。
因为我使用的是 python,安装 flickrapi 库:pip install flickrapi
。
翻墙,这个很重要,我一开始怎么试都是失败就是因为没有翻墙。。。
获得权限
1 |
|
注意的是这种授权第一次会弹出一个网页界面,所以系统里面必须要有浏览器。
授权通过后你的用户下会产生一个 .flickr
文件夹里面存放着授权信息。
上传图片
1 |
|
详细说明,这样获得了上传后图片 ID。
获得外链地址
使用 flickr.photos.getSizes
API 可以获得图片各种大小的外链地址。
开始不清楚 flickrapi 库怎么调用这个 API,后来发现好像是有规律的,photos.getSizes
就是 photos_getSizes
。
1 |
|
返回数据处理可以查看 Response parser: ElementTree 文档。
保存
将图片文件名和地址保存为 json 文件。
全部代码参见 flickr-upload.py。