跳到主要内容

MacOS利用自动操作添加右键压缩图片

· 阅读需 3 分钟

在我之前写的【Typecho插件】MyUpload - 图片压缩上传插件,支持TinyPNG!中提到,该插件是利用运行shell命令来压缩图片的。不过,如果是虚拟主机,一般是无法使用shell命令的。其实,也可以在自己电脑上先压缩好再上传。以前我用hexo静态博客时,就自己写了个压缩图片上传到对象存储的工具:重写了图床神器,支持七牛云和腾讯云。试了下MacOS下的自动操作,感觉还行,就介绍在MacOS下利用自动操作来给图像的右键菜单添加压缩图片的选项。

首先,找到自动操作并打开,然后会弹出选择文件的对话框,选择左下角的新建文稿:

2020-05-15T13:32:15.png

文稿类型选择快速操作:

2020-05-15T13:35:13.png

工作流程收到当前图像文件,位于访达。然后从左边拖一个获取所选的访达项目,然后再拖一个运行Shell脚本,传递输入选择作为自变量:

屏幕快照 2020-05-15 21.37.10.png

在下面的编辑框里输入如下代码:

shopt -s nocasematch
PATH=/usr/local/bin
for f in "$@"
do
suffix=${f##*.}
if [[ $suffix == "png" ]]; then
pngquant --skip-if-larger --ext .png --force --quality=60-90 "$f" || exit 0
elif [[ $suffix == "jpg" || $suffix == "jpeg" ]]; then
jpegoptim --max=90 --preserve --all-progressive "$f" || exit 0
fi
done

对于png和jpg图像,它分别调用pngquant和jpegoptim进行压缩。所以,如果你没有安装的话,需要先用brew进行安装:

$ brew install pngquant jpegoptim

最后,保存,取个名字(比如“压缩图片”),它会保存在用户的 资源库/Services 下面。然后在访达里选择图片,右键服务里就有我们刚刚创建的压缩图片了:

2020-05-15T13:49:50.png

当运行的时候,顶栏会出现一个小齿轮在旋转,当小齿轮消失时就表示运行完毕了。

最后解释下脚本里的代码。

shopt -s nocasematch

用于在比较时不区分大小写。${f##*.}是提取文件的后缀。

另外,这个脚本采用的是覆盖原图的方式,如果不喜欢可以自行修改脚本~