Data is more tractable than program logic. It follows that where you see a choice between complexity in data structures and complexity in code, choose the former. More: in evolving a design, you should actively seek ways to shift complexity from code to data. Eric S. Raymond
许多直面真实生活的自动化小工具,往往更能以小见大。《用 Shortcuts 更换证件照背景,可自定义图片》一文发出后,遂有读者希望增加一项调整证件照尺寸的功能——不少平台有尺寸要求,不符者无法上传——这无疑是对自动化的最高褒奖:确有人将其作为工具,而非玩具。
不过,我并未马上着手改进,盖增加功能本非难事,无非挂上一连串冗长的步骤,恐怕无甚技术含量。在多篇文章中,我甚至刻意拒绝,将长尾工作留给读者自己,因为我无意做一个满足世上所有需求的工具,这只会让原本轻快的工具变得沉重,维护也变成一场噩梦——想想那些几百个步骤的 Shortcuts 动作!
惟此番例外。一个可以给所有 Apple 设备套壳的动作对任何一个特定使用者来说都很可笑,毕竟正常人通常只有一两只手机、一台电脑外加一片儿 iPad,我不知道多出来的那几百套素材除了让他手机死机,还有何意义;但一个预设了多种标准尺寸的证件照制作工具则确有必要,你保不齐哪天就遇到一个严格要求 295x413 像素照片的网站,而你身边只有一台手机,最后搞得鸡飞狗跳。
碰巧,预设尺寸恰好可假借字典模块,最终只比原动作多出两三步,整套动作依旧规整。遂再作此篇,分析如何自制证件照的同时,也回顾潜力难量的字典模块。
- Shortcuts 动作下载
- GitHub 保持更新
使用简介
相较原版,新动作加入选择照片尺寸这一环节,整体并无太大改动。若无需更改尺寸,也可以保留原始大小。
为避免自动裁剪误伤您的面容,我将自动裁剪改为手动调整,您可以(需要)手动拉伸和挪动照片,或露出半身、或只留至领口,直至体面且符合所提交机构的要求。你甚至可以取一张正面拍摄的全身像——只要着装、角度和像素都符合要求——再从中裁出证件照。
惟需注意,手动调整时若以两指拉伸,难免不慎旋转照片,此时可点击编辑页面中的“还原”按钮,即可摆正照片角度而不影响大小,随后可单指移动照片,微调位置,确保对称。
原理简析
以传统的 Shortcuts 制作思路,你可能会经历下面的灾难式交互体验奥德赛之旅:
- 您是否需要更换背景?
- 如果需要,使用预设背景还是自定义背景
- 如果使用预设背景,具体是哪个?自定义背景呢?
- 您是否需要调整照片尺寸?
- 如需要,您需要调整宽度到多少像素?
- 如需要,您需要调整高度到多少像素?
- 您需要保持宽度裁剪,还是保持高度裁剪?
- ……
这就是我不愿马上修改动作的原因:若引入大量判断,把一个轻巧的动作变成反复骚扰使用者的哈尔机器人,不如不做。当然,原版动作已经消除了大量判断,现在的问题只是:如何加入尺寸选择,并保持动作轻量?答案还是字典。
在原版动作中,我就用字典存储了几张内置的背景图片,包括一张蓝色渐变的背景素材,比纯色背景看上去更自然、舒服。此次增加选择尺寸的步骤,仍需假借字典,但是细节大有不同:此番需要字典套字典。详言之,标准的证件照尺寸通常同时限定了宽度和高度,需同时调整这两个参数;既然是成对出现,则不应要求使用者重复选择;同时,最好直接让人看到“一寸照”“
