article_image

20240627:使用前请将 Shortcuts 动作中的“1125”和“2436”更改为您手机截图的实际分辨率。

任何微小的摩擦或者损耗,本身或许不起眼;但如果尝试节省,收效往往也很可观。据说石油大王 John Rockefeller 年轻时曾做过焊接工,工作枯燥,遂考虑能不能每次省一滴焊油,结果发现一年给公司省下5亿美元;Henry Dreyfuss 在设计 Lockheed 飞机内饰时,意识到每轻一磅就能让一架飞机多挣2065美元(那是在两次世界大战期间);在瓶装水的战国时代,谁能把瓶子做轻几克,或许就能脱颖而出。

那种 Rockefeller 能摘到的低垂果实,如今恐怕早已进了别人的肚子,毕竟泰勒在一百多年前就系统研究了如何提升工作效率。不过,新任务不断出现,减少摩擦这一要求也从未消失,而自动化工具,往往能够成为个人工作的润滑油。

言归正传:本文试图降低批量裁剪图片的阻力。批量裁剪,多见于处理截图、证件照或宝丽来相片等尺寸等同的图像。在现实世界中,任何做过手工的人,都懂得把相片或图纸叠在一起,对齐后再一刀剪下,旋能切去白边或者留下主体——然而,iOS 竟然缺乏批量裁剪工具,以至于一帮聪明人在讨论 Shell、Python、Javascript 甚至 Matlab 方案(具体有何不尽如人意之处,请见原理简析部分)。

本文取道 Shortcuts(快捷指令),基本上只需手动裁好一张图,就可以将相应操作套用到几十上百张图片上。

Alt text
批量裁剪截图

操作方法

本方案不羞于承认“半自动”,因为在 iOS 的自动化环境中,料想半自动已是极限。具体操作如下:

  1. 在 Shortcuts App 内部运行本文动作;
  2. 选择需要处理的图片,请确保尺寸一致,且目标区域也处于统一位置(例如,均为淘宝商品页面的图片部分,或者微信读书籍信息介绍区域);
  3. 此时将自动跳到相册,并在相册末尾放置一张供裁剪的样张,稍后操作均围绕此图;
  4. 根据 Shortcuts 提示,裁掉样左侧不需要的部分并保存,然后手动切回 Shortcuts;
  5. Shortcuts 自动处理宽度数据,并自动跳回 Photos;
  6. 根据 Shortcuts 提示,裁掉样张上方不需要的部分并保存,然后手动切回 Shortcuts;
  7. Shortcuts 自动处理高度数据,并自动跳回 Photos;
  8. 根据 Shortcuts 提示,完成裁剪并保存,然后手动切回 Shortcuts;
  9. Shortcuts 自动处理目标图片尺寸数据,并自动结合方才获取的长和宽,统一裁剪所有最初选中的图片。

上述步骤,其实是将手动裁剪分成几个机械步骤,并记录每一步产生的数据,最终得到目标区域的起始位置尺寸大小(本质上是两个张量)数据。

原理简析

绝大多数方案的问题不在于所用的工具本身门槛高——毕竟可以打包成很简单的工具,如前田约翰所言,“隐藏复杂——而在于,都必须先手动输入裁剪的起始座标和裁剪尺寸。无论是 Mac App Store 里十年无人维护评分掉到两分可还是一直有人死马当活马医敢下单的僵尸软件(不点名了),还是噼里啪啦一通现编代码的 GPT 缝合脚本,或者来自论坛角落的高手留言,均难免窠臼。

可惜,又有几个人拥有像素眼(pixel eyes),能够看出座标和尺寸呢?抛开专业人员不说,大家应该都更愿意直接的图形界面中裁裁剪剪吧!上述种种方案,单单是获取各项数据这一步,大概就劝退了多数人,基本只有工作任务顶着脑袋的可怜人才不得不用,一般人估计要么退回手动操作,要不干脆放弃。

尽可能走图形界面,便是本文方案的设计要旨。

Alt text
Shortcuts 步骤

裁剪图片,需要获取目标区域的起始位置尺寸大小。后者容易获得,只需提供裁好的样张,读取其长度与宽度即可;难点在于前者,盖起始位置并非图片本身的属性,无法直接获取,只能在新图与旧图的比较之间产生。

为了从尽可能少的操作中获得所需数据,我将貌似简单的裁剪操作拆作几步,每裁一次保存一下,再手动切回 Shortcuts App、让 Shortcuts 动作自动抓取新操作所得的一项或两项数据。其中的关键步骤是 Open App 和 Wait to Return,分别用于自动其打开相册和继续运行后续 Shortcuts 步骤,如同半自动手枪中的金属杆,可以减少一些手工操作。

一旦获得所需数据,Shortcuts 即可调用内置的裁剪模块,逐一裁剪所有待处理的图片。

独辟蹊径:Shortcuts 设计之道
独辟蹊径:Shortcuts 设计之道

🛍付费内容链接