环境
系统: Mac
工具: Alfred, git, homebrew, pngpaste.
语言: perl
其他: Gitee
工具下载
https://gitee.com/serpmelon/inazuma
思路
使用Gitee仓库作为图床, 使用Alfred工作流简化上传图片流程, 并将上传图片地址转换为markdown格式输出到剪切板中.
使用
复制一张图片, 然后使用快捷键CMD + shift + u或者唤出Alfred命令行输入pp.
上传成功后会发送通知提示上传成功.
实现
创建Gitee图床环境
注册账号, 创建仓库, 注意修改为公共仓库, 把仓库拉到本地, 以后会将目标图片复制到仓库中. 其他没什么说的.
复制剪切板中的图片到指定路径
遇到的第一个难题, 如何将剪切板中的图片复制到指定目录下呢(git目录)? pbcopy和pbpaste命令只能操作文本, 所以第一个想法, 复制图片的路径, 这样就可以通过操作文本进行赋值操作.
对图片使用cmd+option+c会复制其路径, 然后通过执行cp命令将文件复制到指定目录中.
system("cp $source $target");
但是, 这样很不方便, 而且通常情况下都是截一个图片沾到自己的文章中, 如果只能通过路径复制, 那么每次截图还需要下载到本地. 所以需要实现将剪切板中的图片文件复制到目录的功能.
使用pngpaste工具实现上述功能, 使用homebrew下载
brew install pngpaste
使用简单
pngpaste hooray.png # 目标文件
参考 https://github.com/jcsalterego/pngpaste
本地运行正常, 但是在Alfred中运行异常, 排查发现是找不到pngpaste命令. Alfred运行脚本不会使用用户的运行环境, 所以找不到第三方命令, 解决办法就是我们帮它找到命令, 使用全路径就可以拉, 路径配置到Alfred变量中.
system("$PASTE_DIC/pngpaste $target");
git命令提交图片
图片已经复制到git本地仓库了, 然后只需要push上去就好了.
system("cd $GIT_DIC; git add .;git commit -m 'pic';git push");
拼接图片地址
浏览下Gitee上图片的地址, 类似这样
https://gitee.com/serpmelon/pictures/blob/master/20230102/1672643597serpmelon15714.png
将blob换成raw就可以访问了, 修改后:
https://gitee.com/serpmelon/pictures/raw/master/20230102/1672643597serpmelon15714.png
然后按照markdown格式拼接地址后:
![](https://gitee.com/serpmelon/pictures/raw/master/20230102/1672643597serpmelon15714.png)
问题
- 图片过大问题, 实际使用过程中发现图片已经上传但是就是无法显示, 最后发现是图片过大, 无法展示, 这个应该是Gitee的限制, 比如下面这个链接对应的图片3.6M就无法显示.
![](https://gitee.com/serpmelon/pictures/raw/master/20230102/1672646592serpmelon10602.png)
所以为了能正常显示需要对图片进行一个压缩处理, 目前调研了部分工具可以实现图片的压缩, 但是本来就是一个简单的图床工具还需要用户自己下载各种工具? 所以压缩功能打算自己后面实现一个.
- 同上面的问题, 使用本工具需要用户自己下载pngpaste, 这个也打算自己实现下.