Alfred + Gitee搭建免费图床的使用实例详解
作者:serpmelon 发布时间:2023-10-04 08:24:30
环境
系统: Mac 工具: Alfred, git, homebrew, pngpaste. 语言: perl 其他: Gitee
工具下载
gitee.com/serpmelon/i…
思路
使用Gitee仓库作为图床, 使用Alfred工作流简化上传图片流程, 并将上传图片地址转换为markdown格式输出到剪切板中.
使用
复制一张图片, 然后使用快捷键CMD + shift + u或者唤出Alfred命令行输入pp. 上传成功后会发送通知提示上传成功.
依赖
使用pngpaste工具实现剪切板相关功能
brew install pngpaste
使用ImageMagick实现图片压缩
brew install imagemagick
实现
创建Gitee图床环境
注册账号, 创建仓库, 注意修改为公共仓库, 把仓库拉到本地, 以后会将目标图片复制到仓库中. 其他没什么说的.
配置Alfred workflow
下载并将工具拖进Alfred中, 由于依赖了第三方软件, 在执行脚本时需要指定工具目录, 所以需要在workflow中配置对应路径如下:
GIT_DIR git仓库本地路径, 图片会直接复制到这里.
GIT_DOMAIN git图床路径, 比如我配置的是 https://gitee.com/serpmelon/pictures/raw/master.
IMAGE_MAGICK_DIR ImageMagick工具安装的路径.
PASTE_DIR pngpaste工具安装的路径.
对于homebrew下载的工具可以通过如下命令查看
brew list pngpaste
返回: /usr/local/Cellar/pngpaste/0.2.3/bin/pngpaste
则配置路径: /usr/local/Cellar/pngpaste/0.2.3/bin
brew list imagemagick
返回:
/usr/local/Cellar/imagemagick/7.1.0-16/bin/Magick++-config
/usr/local/Cellar/imagemagick/7.1.0-16/bin/MagickCore-config
/usr/local/Cellar/imagemagick/7.1.0-16/bin/MagickWand-config
/usr/local/Cellar/imagemagick/7.1.0-16/bin/animate
/usr/local/Cellar/imagemagick/7.1.0-16/bin/compare
/usr/local/Cellar/imagemagick/7.1.0-16/bin/composite
...
配置路径: /usr/local/Cellar/imagemagick/7.1.0-16/bin
复制剪切板中的图片到指定路径
遇到的第一个难题, 如何将剪切板中的图片复制到指定目录下呢(git目录)? pbcopy和pbpaste命令只能操作文本, 所以第一个想法, 复制图片的路径, 这样就可以通过操作文本进行赋值操作.
对图片使用cmd+option+c会复制其路径, 然后通过执行cp命令将文件复制到指定目录中.
system("cp $source $target");
但是, 这样很不方便, 而且通常情况下都是截一个图片沾到自己的文章中, 如果只能通过路径复制, 那么每次截图还需要下载到本地. 所以需要实现将剪切板中的图片文件复制到目录的功能.
使用pngpaste工具实现上述功能, 使用homebrew下载
brew install pngpaste
使用简单
pngpaste hooray.png # 目标文件
参考 github.com/jcsalterego…
本地运行正常, 但是在Alfred中运行异常, 排查发现是找不到pngpaste命令. Alfred运行脚本不会使用用户的运行环境, 所以找不到第三方命令, 解决办法就是我们帮它找到命令, 使用全路径就可以拉, 路径配置到Alfred变量中.
system("$PASTE_DIC/pngpaste $target");
git命令提交图片
图片已经复制到git本地仓库了, 然后只需要push上去就好了. 由于在不同目录执行, 执行会报提示"fatal: not a git repository", 使用类似如下命令即可
git --git-dir=/x/y/.git --work-tree=/x/y add .
图片压缩
Gitee限制图片大小, 对于大于1MB的图片会打不开.
所以对于大的图片需要进行压缩处理, 这里依赖ImageMagick, 使用brew下载.
brew install imagemagick
拼接图片地址
浏览下Gitee上图片的地址, 类似这样 gitee.com/serpmelon/p… 将blob换成raw就可以访问了,
修改后:
https://p3-jb51.byteimg.com/tos-cn-i-k3u1fbpfcp/ba10ca414b2b4a5d87904573434f3493~tplv-k3u1fbpfcp-zoom-1.image
然后按照markdown格式拼接地址后:

问题
目前依赖了pngpaste和ImageMagick工具, 后面自己简单实现下, 这样用户就不需要自己再单独下载依赖了.
来源:https://juejin.cn/post/7193615157464367163


猜你喜欢
- 在网络上的Pandas教程中,很多都提到了如何使用Pandas将已有的数据(如csv,如hdfs等)直接加载成Pandas数据对象,然后在其
- 本文实例为大家分享了python rsync服务器之间文件夹同步的具体代码,供大家参考,具体内容如下About rsync配置两
- 本文实例为大家分享了js实现带积分的弹球小游戏的具体代码,供大家参考,具体内容如 * :如果小球与底部方块的角碰撞,积分可能有些许bug<
- echarts legend点击事件首先,明确本篇文章的重点,主要有三个:1. 给legend添加点击事件2. 禁用legend点击事件的默
- 起步Python3 起,str 就采用了 Unicode 编码(注意这里并不是 utf8 编码,尽管 .py 文件默认编码是 utf8 )。
- 语法:Void header(string $string[,bool $replace=true [, int $http_respons
- 解决IDEA翻译插件Translation报错更新TTK失败不能使用有好久一段时间没有用idea的插件Translation,升级后使用翻译
- 前言相信各位一定有收到过这样的群发短信,据说还被归类为玩转微信的五大技巧之一╮(╯▽╰)╭但,其实,只要跑一下脚本,就轻松找出删除自己的好友
- 我遇到过这种情况 就是在我的data中 会有数据调用data中的其他数据如图 我的alertInfoType需要拿到screeningCon
- 一,子选择基本用法 1,子选择的定义 子迭择允许把一个查询嵌套在另一个查询当中。比如说:一个考试记分项目把考试事件分为考试(T)和测验(Q)
- 在JavaScript的世界里,定义函数的方法多种多样,这正是JavaScript灵活性的体现,但是正是这个原因让初学者摸不着头脑,尤其对于
- 环境:Anaconda自带的编译器——Spyder最近才开使用conda,发现conda 就是 yyds,爱啦~一、Tensor(张量)im
- 1.弹启一个全屏窗口 <html> <body onload="win
- 项目介绍背景:DC竞赛比赛项目,运用回归模型进 * 价预测。数据介绍:数据主要包括2014年5月至2015年5月美国King County的房
- ajax编程获取Google的PageRank3(PR值)及所在目录,想给你的站增加Google PR查询的功能吗?如果你不会就看看本文吧,
- 1.导入依赖包import ( "github.com/spf13/viper")2.编写ya
- 在Python中,有些开源项目中的方法返回结果为self. 对于不熟悉这种用法的读者来说,这无疑使人困扰,本文的目的就是给出这种语法的一个解
- 本文实例讲述了PHP中使用addslashes函数转义的安全性原理分析。分享给大家供大家参考。具体分析如下:先来看一下ECshop中adds
- 有三种主要的错误类型: 1.编译错误: 这种错误出现一般都是代码的语法问题。因为编译错误而导致辞ASP停止运行。 2.运行错误: 这个错误是
- 前言这几年对运维人员来说最大的变化可能就是公有云的出现了,我相信可能很多小伙伴公司业务就跑在公有云上, 因为公司业务关系,我个人