6 个小工具,打造图片批处理工作流

对于多数文章来说,适当的配图是必不可少,尤其是一篇讲解技巧、评测 App 的文章,离开图就很难理解。

统计工作时间时,我也会特意分开记录打字和配图的时长,尽量真实反应自己的工作状态。

10% 的时间在配图

上图是我最近写 Power+ 文章的耗时。尽管我已经用上了各路自动化工具,仍然有 10% 的时间花在配图上。

不难看出,相比文章撰写,配图制作的工作量也不小。编辑部的成员,不仅要处理自己文章的配图,出于网站视觉统一的考虑,还要把投稿中的配图修缮一番。

为了给原创性的写作工作腾出更多时间,我一直改进自己的图片处理流程,将其中的机械部分做成自动化动作。一年工作下来,也积累了不少原创小工具:拼接图片、调整尺寸、加阴影、移除信息、转换格式……这些动作,原理上有很多类似之处,又都围绕图片处理这一主题,所以我把它们汇总起来分享给大家。当然,即使你并不常写文章,这些小工具在 PPT 制作、海报编排等工作中也派得上用场。

使用前的准备

我日常用的自动化工具是 LaunchBar,所以本文例图展示的都是 LaunchBar 的场景,不过所有动作都可以移植到 Automator、AlfredKeyboard Maestro 等其他自动化工具上。

无论下载哪个版本的动作,都需要这两个准备工序:

  • 安装 HomeBrew:为方便一会儿装别的第三方图片处理工具。在 Terminal 输入:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  • 安装 imagemagik:这是一个免费的命令行图片处理工具,虽然没有图形界面,但也因此可以和各种自动化工具打包在一起批量处理图片,而且相比图形化的工具可拓展性更高,有兴趣的读者可以把动作串联起来使用,或者在处理完图片后进行归档、上传到图床等操作。安装 imagemagick 需在 Terminal 输入
    brew install imagemagick

LaunchBar 动作下载后建议重命名文件。为了方便识别,我提供的部分动作可能是中文名的,但你得换一个英文名或拼音名,不然 LaunchBar 无法显示它们。

LaunchBar 动作

Automator 动作下载安装后可以直接在右键菜单中看到。

Automator 动作会出现在右键菜单里

令人宽心的是,这些动作在使用时全程不用打开 Terminal,也用不着输入任何代码。下面我们来看看这些动作是怎样工作的,并重点了解一下我们可以自定义的部分。

拼接图片

拼接图片听起来毫无技术含量,不过大家不妨回忆一下,一般人在 Mac 上是怎么操作的?你可以观察一下身边的人,相信绝大多数都是把几张图片导入 Photoshop,手动对齐,再导出新图片。这一轮操作下来,固然耗时不多,但每天处理十几张配图就能让人怀疑自己的工作意义。机械的事情当然要尽可能交给自动化工具。

在 imagemagick 里,我们可以横向、也能纵向拼接多张图片,并且可以预设间距、背景颜色,免去手动导入、拖拽的麻烦。具体会用到这两条代码:

  • 横向拼接:convert 图片1 图片2 图片3 … -background none +append 输出图片
  • 纵向拼接:convert 图片1 图片2 图片3 … -background none -append 输出图片

其中 -background none 可能稍有些费解,其实它表示采用透明背景,毕竟实际操作中我们常常遇到需拼接的图片尺寸不同的情况,此时对不齐、多出来的部分若是塞上一块色块就会很难看,用一个透明背景则会让成品图更自然。

拼接效果对比,加工前的色块很碍眼

当然,你不会希望每次都敲一遍命令的,所以了解完 imagemagick 拼接图片的原理后,我们就把命令整合进 LaunchBar。所幸 LaunchBar 对变量的输入输出控制得非常好,我们一次性导入多张图片也没有问题。

以横向拼图为例,在 LaunchBar 里新建一个动作(如果你不知道怎样新建,可以看 这篇文章,动作的设置也是一样的)把下面的代码直接拷贝进去:

PATH=$PATH:/usr/local/bin/

ARG="$1"
ddate=`date +%Y-%m-%d-%H%M%S`
ooutput="${ARG%/*}/concact-$ddate.png"

convert "$@" -background none +append "$ooutput" && afplay "/System/Library/Sounds/Submarine.aiff"

至于纵向拼图的代码,其实只是把 +append 换成 -append,你可以自己完成,这里不重复贴出了。

我对于基础的拼图命令做了点优化,把生成的图片命名为 concact-当前日期时间,避免和原有的文件冲突,并且新图和原图放在同一个文件夹里。另外,在图片处理成功后还会发出提示音,如果你不喜欢听到频繁的通知音,可以直接删除  && afplay "/System/Library/Sounds/Submarine.aiff"  这一部分。

在使用的时候,图片会根据被选中的先后从左到右或从上到下地排布,如果你希望某一张图片排在前面,就先选中它,再点选其他图片。每期编排 Shortcuts Gallery 上新文章时,拼图动作都可以节省我打开专业修图软件的时间。

横向拼接图片

横向/纵向拼图这组动作我用了很久了,也和一些读者分享过,他们发掘出了更多的应用场景。比如 @谭小熊 就反馈过一个意想不到的用法:制作照片墙

照片墙

这种人头攒动的图大家在各种公益活动上都看过,但你可能不知道,不少主办机构都是一张一张手动拼接的,非常低效;谭小熊则把图片分成几组,横向拼了几行,再纵向拼在一起,几分钟就完成了拼图。看到自己的动作被读者活用,没有什么比这更让制作者开心的。