:tada:简介
gopic 是一个图床工具,用来上传到七牛云或者github 等,使用简单,容易开发插件,全并发,充分解耦
:zap:使用
安装
:scroll:从源码安装
1 | $ git clone https://github.com/OSTGO/gopic/commits/main |
二进制文件生成在 out
目录下。
:package:下载安装
x86-64 linux版本: gopic-linux-amd64
arm-64 linux版本: gopic-linux-arm64
x86-64 mac版本:gopic-mac-amd64
x86-64 windows版本:gopic.exe
下载后可直接运行,注意!请通过命令行运行!
交互
gopic命令 | 说明 |
---|---|
init | 初始化配置,配置生成在home/.gopic.json |
conf | 打印配置信息等 |
update | 从github更新自己 |
upload | 图床主命令,下表有详细参数介绍 |
convert | 图片转换命令 |
gopic upload 参数 | 说明 | 默认值 |
---|---|---|
-a,–all | bool类型,若为true,将上传到配置中激活的所有存储插件中 | false,若为false,-s内容为空时自动设置为true |
-n, –name | bool类型,若为true,将不会屏蔽文件名 | false |
-f, –format | string类型,选用哪一个存储插件作为返回值 | 默认为第一个存储 |
-s, –storage | string列表,选择要上传到哪些存储插件中,用, 分割 |
默认为空,若为空,-a未配置自动配置为true |
-p, –path | string列表,图片可以是本地地址,也可以是网络地址 |
例如gopic upload -a -p ./1.gif ./2.png https://cdn.jsdelivr.net/gh/Longtao-W/pics@main/20210916/avatar.71pjc2scvak0.jpg -f qiniu
代表上传./1.gif ./2.png https://baidu.com/img.png
三个图片到所有已经激活的插件,并使用qiniu
插件的返回值
结果为:
https://cdn.jsdelivr.net/gh/Longtao-W/pics@main/22/8520716594215125117496217642356398137175_1.png https://cdn.jsdelivr.net/gh/Longtao-W/pics@main/22/230182152169544190214107228101001761655235_2.png https://cdn.jsdelivr.net/gh/Longtao-W/pics@main/22/254555454555441902154101556543454354543545_img.png
其中22为年份,文件名为图片内容的md5结果与原本文件名使用_
连接,能有效去重
gopic convert 参数 | 说明 | 默认值 |
---|---|---|
-c, –covertPath | string类型,要操作的文件夹或文件 | 当前文件夹 |
-a, –all | bool类型,若为true,将上传到配置中激活的所有存储插件中 | false,若为false,-s内容为空会报错 |
-n, –name | bool类型,若为true,将不会屏蔽文件名 | false |
-r, –recurse | bool类型,递归替换 | 默认递归(非递归没实现) |
-s, –storage | string列表,选择要上传到哪些存储插件中,用, 分割 |
默认为空,若为空,-a未配置会报错 |
-f, –format | string类型,选用哪一个存储插件作为返回值 | 默认为第一个存储 |
-d, –dir | string类型, 替换后输出的位置 | 必选 |
例如,如命令: ./gopic-linux-amd64 convert -c /home/longtao/temp/blog/ -d /home/longtao/temp/blog2 -f samba -s samba
将会把/home/longtao/temp/blog/
目录下递归的把所有md文件中的图片转换到samb存储中,并把转换后的md文件存储在 /home/longtao/temp/blog2
中
对比tree /home/longtao/temp/blog/
和tree /home/longtao/temp/blog2
我们发现是一样的,但是每个md文件中的图片都转换到samb存储中路
:seedling:结合Typora使用
1.
进入文件->偏好设置
2. 在偏好配置->图像
选项卡中选择插入图片时上传图片,并使用Custom Command
自定义上传服务,在命令中填写需要的gopic命令即可
- 使用验证图片上传成功后,即可开心的任意粘贴图片,文章中图片会自动保存到激活插件的存储中,本说明的图片就使用gopic自动上出处理
:heavy_plus_sign:开发
添加插件
插件需要添加到plugin
目录中,需要满足以下条件
- 定义这个插件的类,其中要包含基础类
*utils.BaseStorage
; - 实现
Upload(im *utils.Image)(string,error)
方法,在Upload
中实现单个图片的上传,返回值分别为:图片返回地址、错误信息; - 定义初始化函数
init()
- 将插件名和帮助文档写入
utils.StroageHelp
- 将插件名和实例写入
utils.StroageMap
,注意需要判断是否active
例子:
1 | package plugin |
:bulb:基本框架
全并行
不同图片之间以及不同插件之间全部并行
单例模式:相同图片只会处理一次,节省内存及时间消耗,对大目录来说能快速转换!
使用一个插件传输一张图片
的时间T11与使用m个插件传输n张图片
的时间Tmn, 在算力满足的条件下,Tmn远远小于T11*n
,更远远小于T11*m*n
充分解耦
插件与框架完全解耦,可自行编写插件