3

8. 处理图像实例:批量清理截图状态栏

 4 months ago
source link: https://sspai.com/post/79283
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

8. 处理图像实例:批量清理截图状态栏

1
8. 处理图像实例:批量清理截图状态栏
2023 年 04 月 13 日

作为 2024 年五一「生产力超频」系列目优惠活动的一部分,本期设置为限时免费,欢迎观看。我们将在 5 月 1 日至 7 日,为热门付费栏目「生产力超频」全系列设置七折优惠;同时,我们将每天从不同教程中选出一篇,设为限时免费。希望这些内容和优惠为你助力,开启一个效率和技能「超频」的五月。进一步了解

今天的限时免费内容来自《学得会的快捷指令》,演示一个非常实用的图像处理实例:批量清理截图状态栏。本栏目从我们日常最容易用到快捷指令的场景入手,带你走过「发现需求—研究重点功能模块—用快捷指令解决需求」的完整路径。栏目原价 59 元,折后价 41.30 元(节省 17.70 元)。前往购买


在熟悉了图像与文本处理的基础后,我们也为你准备了相关的实例分析,希望能帮你更好地消化相关内容。

如果你经常看少数派的文章,或许会发现许多作者在制作文章配图时,设备的状态栏显示的都是满信号、满电量,时间则是 9:41。这样的「演示模式」不但可以统一截图中状态栏的风格,也可以避免不必要的隐私泄露问题。

1

一般来说,Picsew 一类的第三方 app 都支持「清理状态栏」的功能。但这些 app 通常需要我们一张张手动选择截图、清理状态栏、导出,如果只是一两张截图还好,如果需要同时处理大量截图,手动操作的效率显然就太慢了。

此时,如果用快捷指令来批量清理,就能帮我们省下不少时间。

🔗 点击下载 >

既然要写快捷指令,那么我们按照惯例来拆解一下需求:

  • 批量选择:手动或自动选择要清理的截图;
  • 自动处理:在快捷指令接入第三方 app 清理状态栏并保存;
  • 自动善后:批量删除清理好状态栏的截图原图。

从上面的需求不难看出,它的核心其实是「选择 - 处理 - 删除」流程。这一套流程可以应用在绝大多数的图像处理快捷指令中,即便是批量加水印、裁切等需求都可以用这一套流程来解决。

其中每个需求对应的动作大致固定:

  • 选择:查找照片、选择照片……
  • 处理:图像处理相关的动作等;
  • 删除:删除照片。

在明确好需求与流程后,我们就可以开始着手进行快捷指令的编写了。

如果只是选择截图的话,相信你的脑海中一定浮现出了「选择照片」这个动作。的确,手动选择截图是最稳妥且符合直觉的方法,不过既然我们都用到快捷指令了,何不尝试些更高效的方法呢——比如自动选择。

在接下来的例子中,我们将搭建一个全自动的截图选择模块,它需要做到以下两点:

  • 默认情况下,自动选择过去 2 小时内的所有截图;
  • 如果没有获取到截图,便弹出手动选择框作为备选。

而要达成这两点,在快捷指令中也仅需要 3 个简单的动作:「查找照片」「如果」「选择照片」

首先,我们添加一个「查找照片」,并按照下图设置筛选条件:

1

其中的时间可以按照自己的实际需求进行调整,但其中的 拍摄日期是今天 不能删掉。因为我们在说「获取最近 2 小时截图」时,其中有一个「今天的最近 2 小时」的隐藏条件,但快捷指令并不能读出来。于是,它便会忽略日期信息,只依靠时间范围来判断,即使是 3 年前这个时间截的图也会被算进来。

因此,我们需要事无巨细地把限制条件通通告诉快捷指令,才能更好地获取我们需要的照片。

接着,我们要添加一个「如果」来判断「查找照片」是否获取到了对应的截图。

1

这里之所以使用「没有值」,是因为这样能够让快捷指令更直观易懂。我们这里要做的判断是如果快捷指令没有获取到截图,就开始手动选择,使用「没有值」会更符合判断的逻辑。

接着,我们只要在「如果」判断中加入「选择照片」的动作,并点击「展开」勾选「选择多张」即可。

1

这样一来,我们只用到 3 个动作就实现了自动选择最近 2 小时的截图提供手动选择的备用方案两个需求。但我们还需要将这些照片传递到后面的动作,怎么办呢?

没错,用「变量」就行了。

我们只需要为「如果」判断中加入两个「添加到变量」动作,一个在「选择照片」后面,一个在「否则」后面。

1

因为第一个「添加到变量」会自动获取「选择照片」所输出的结果,因此我们不需要做额外的操作,只需要将第二个「添加到变量」的 照片 通过「选择变量」修改为「查找照片」所筛选出来的照片就行。

需要注意的是,两个动作中变量的名称要保持一致,避免后续调用时产生错误。

图片处理模块

在这个例子中,我们将会用到 Picsew 的 URL Schemes 功能来实现快捷指令与第三方 app 的联动。此功能需要购买 Picsew 专业版,你也可以根据自己的使用习惯选择其他 app 来实现相同的效果。

先给不了解 URL Schemes 的朋友简单介绍一下,URL Schemes 就像连接不同 app 之间的桥梁,应用 A 可以通过 URL Schemes 来访问应用 B 中的特定功能。在这个快捷指令里,它起到的作用如下:

  • 告诉 Picsew 快捷指令选择了哪些截图;
  • 告诉 Picsew 需要做哪些动作(比如清理状态栏、保存照片等)。

如果你想详细了解 URL Shemes,可以阅读这篇文章,本文不做过多展开。

在开始编写这个模块之前,我们得先对 Picsew 的 URL Schemes 规则有一些了解:

  • 照片输入规则:支持获取剪贴板最近 N 张图片最近的截图
  • 照片处理规则:支持套壳截图清理状态栏移除滚动条等;
  • 照片输出规则:支持输出到剪贴板保存至相册保存并拷贝至剪贴板

从上面可以看出,最适合这个快捷指令的选项应该是:

  • 照片输入:剪贴板(in=paste)
  • 照片处理:清理状态(clean_status=yes)
  • 照片输出:保存至相册(out=save)

此时你或许会有疑问,明明 Picsew 支持「最近的截图」,为什么还要用快捷指令来获取呢?因为 Picsew 中「最近的截图」所对应的是「生成长截图」的场景,也就是「获取最近的所有截图,并拼接为长截图」。

而我们要做的是「导入单张照片,只清理状态栏」,因此我们需要用快捷指令来做筛选、导入的工作。

在明确了需求后,我们就能得到这样一条 URL Schemes:

picsew://x-callback-url/scroll?in=paste&clean_status=yes&out=save

在明确了 URL Schemes 之后,我们就可以开始编写模块了。

我们需要先添加一个「为每个项目重复」的动作,将所有照片拆分为单张照片进行处理。接着,添加「拷贝到剪贴板」的动作,并将重复项目(也就是当前这个重复中处理的单张照片)拷贝到剪贴板。

接着,在重复中添加一个「打开 X-Callback URL」,并将刚刚的 URL Schemes 粘贴进去。

1

同样只用到 3 个动作,图片处理模块就写完了。比想像中的要简单吧?这个模块的自由度也很高,只需要修改「为每个项目重复」里的动作就能实现不同的效果。

说是「模块」或许有点夸张了,实际上这一步只需要在「结束重复」后添加一个「删除照片」动作,并且将要删除的照片设定为变量「照片」。

在实际使用过程中,我们只需要点击运行快捷指令,然后等它自动执行动作即可。期间设备会在快捷指令和 Picsew 之间反复跳转处理照片。

1

在结束后,设备会弹出一个窗口询问你是否要删除照片,此时点击「删除」即可。我们也可以选择「始终删除」。这样我们之后再运行这个动作时,快捷指令就会自动替我们删除掉所有照片,而不会弹窗提示了。

1

至此,批量清理截图状态栏的快捷指令就算完成。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK