paint-brush
如何使用 Photoshop API 自动化图像工作流程经过@raymondcamden
2,410 讀數
2,410 讀數

如何使用 Photoshop API 自动化图像工作流程

经过 Raymond Camden7m2023/06/30
Read on Terminal Reader

太長; 讀書

Pipedream 是一种用于构建通用工作流程的低代码/无代码解决方案。它与 Microsoft PowerAutomate 和 Workfront Fusion 处于同一领域。在这篇文章中,我们将向您展示如何使用 Pipedream 构建基于 Dropbox 的工作流程。
featured image - 如何使用 Photoshop API 自动化图像工作流程
Raymond Camden HackerNoon profile picture

最近,我们讨论了开发人员如何使用Photoshop API 。在那篇文章中,我们分享了一个简单的 Node.js 脚本,该脚本将使用存储在 Azure 中的文件调用其中一个 API。


这很简单——获取访问令牌,使用输入文档启动 API 作业,轮询完成情况,然后检查结果。


简单是件好事,因为这意味着可以轻松集成到自定义工作流程中。在今天的文章中,我们将这样做。

我们的工作流程

让我们首先定义我们的工作流程要做什么。想象一下,我们正在使用云存储提供商(在本例中为 Dropbox)来存储照片。我们的工作流程将监视此文件夹并在添加新图片时触发。


添加图片后,我们将抓取文件并将其发送到运行 Lightroom “AutoTone”功能的端点。此功能尝试纠正照片中的曝光、对比度和其他问题。


作为一个例子(我们直接从文档中偷来的),下面是显示更正影响的前后对比:


对图像产生影响之前和之后。

API 完成后,我们会将结果存储在 Dropbox 的另一个文件夹中。我们可以覆盖原始版本,但最有可能的是,人们会想要两份副本,以便他们可以进行最终检查,看看他们更喜欢哪一个。

沃夫克洛平台

对于我们的工作流程,我们将使用Pipedream 。 Pipedream 是一种用于构建通用工作流程的低代码/无代码解决方案。它与 Microsoft PowerAutomate 和 Workfront Fusion 处于同一领域。 (您也可以很快在这些平台上看到我们提供的示例。)


Pipedream 通过让项目中更困难甚至更无聊的方面变得“即插即用”,确实为开发人员提供了帮助。例如,在定义启动工作流(触发器)的内容时,Pipedream 附带了大量预构建的代码块。


当我们开始演示如何构建工作流程时,您将看到它的实际效果。 Pipedream 有免费套餐,因此那些想要继续阅读的读者可以在注册后进行操作。


如果您以前从未使用过 Pipedream,请查看他们出色的Pipedream University ,了解其工作原理。他们也有优秀的文档。最后,您友好的作者也写了有关 Pipedream 的文章。


解决了这个问题,让我们开始构建吧!

第一步——触发点

Pipedream 工作流程从一个触发器开始,该触发器代表应该启动我们的流程的“事件”。 Pipedream 内置了很多很多这样的触发器(您可以编写自己的触发器),幸运的是,支持 Dropbox 触发器中的“新文件”:


设置 Pipedream 触发器


选择“新文件”触发器后,您将获得一个简单的界面来配置它:


指定 Dropbox 新文件触发器的选项


最重要的是身份验证方面。在这里,您可以将 Pipedream 连接到您的 Dropbox 帐户。最重要的是,一旦您完成了一次,您就可以在多个工作流程中重复使用该连接。


接下来,记下路径值。您可以在此处输入,Pipedream 将尝试根据您的帐户自动完成,或者只需输入路径。我们将使用/PSAPI_Input作为期望获取图像的文件夹。


接下来的两个设置可以忽略,但最终设置Include Link应切换为 true。我们将需要该链接,以便我们可以告诉 API 如何获取数据。


这是我们工作流程的最终配置触发器:


最终配置的触发步骤


回顾一下,此时,我们已将工作流程配置为在文件添加到 Dropbox 帐户中的特定文件夹后立即自动触发。

第二步 — 获取上传 URL

当 Photoshop API 运行时,它至少需要两个东西 - 输入 URL 和输出 URL。基本上,在哪里读取输入以及在哪里存储结果。


我们的输入将是添加到 Dropbox 的新文件。我们的输出将是经过 Lightroom 校正的图像的位置。


为了支持这一点,我们需要要求 Dropbox 生成一个可用于存储数据的特殊 URL。 Pipedream 内置了很多 Dropbox 操作,但不幸的是,没有这一特定操作。


幸运的是,Pipedream 确实允许您使用自定义代码创建一个步骤,其中它已经为您处理了身份验证。请记住,在触发器中,我们指定了现有的 Dropbox 帐户。因为我们这样做了,所以我们可以编写代码并让 Pipedream 处理身份验证。


通过查阅Dropbox API ,我们找到了get_temporary_upload_link端点,这正是我们所需要的。


在 Pipedream 中,我们添加一个新步骤并选择“在 Node.js 中使用任何 Dropbox API”。这为我们提供了击中一个示例端点的样板代码:

最重要的是 - 请注意,身份验证信息是自动提供的。然后我们需要做的就是编辑端点并设置我们的输入:

请注意,我们使用的路径是不同的文件夹/PSAPI_Output 。之后的值${steps.trigger.event.name}演示了如何使用工作流程早期的信息,特别是触发工作流程的事件的文件名以及文件本身的名称。


代码最后返回 API 调用的结果,在我们的例子中,该结果将是一个可以在 API 调用中使用的特殊 URL。

第三步 — 获取访问令牌

在我们之前的博客文章中,我们讨论了如何获取 Photoshop API 的凭据以及如何在代码中使用它们来获取访问令牌。在 Pipedream 中,我们可以向工作流程添加一个步骤来运行自定义代码。


您在上一步中使用 Dropbox API 时已经看到了这一点。 Pipedream 支持 Node.js 和 Python,因此您有一些选择。我们将添加一个新的代码步骤并将其命名为getAccessToken


此步骤将负责使用我们的凭据生成 JWT 并将其交换为访问令牌。


在上一篇博客文章中,代码使用@adobe/jwt-auth包来简化过程。但是,此包不能作为 Pipedream 支持的 ES6 导入使用。幸运的是,我们可以换成另一个 NPM 包jsonwebtoken 。我们看一下代码:

这里有几件事。首先,每个 Node Pipedream 代码步骤都使用如下形式:

run函数会自动调用,并传递之前步骤中的数据以及我们不需要的其他操作的处理程序 ( $ )。基本上,我们将把导入放在顶部,将逻辑放在里面。


您可以看到从环境中复制一组变量,这并不奇怪,Pipedream 还允许我们定义自定义环境变量。


下一个代码块生成我们的 JWT。这主要是样板文件,但要特别注意jwtOptions部分。此变量"https://ims-na1.adobelogin.com/s/ent_ccas_sdk": true,是设置令牌范围的变量,并且是使用 API 所必需的。


创建 JWT 后,可以将其发送到通用 Adobe 端点以生成访问令牌。最后一点逻辑是返回该令牌。如果您还记得上一步,我们返回的任何内容都可以在以后使用。您很快就会看到它的实际效果。

第四步 — 调用 Lightroom Autotone API

现在,是时候开始谈正事了。我们的触发器为我们提供了新图像的链接。下一个代码步骤生成了一个链接,供我们上传最终结果。然后我们得到了一个访问令牌。我们已具备启动该流程所需的一切。


我们将再次向工作流程添加 Node.js 步骤。这是在行动。

Autotone API需要一些参数,在本例中为输入和输出值。在我们的例子中,我们传递来自触发器的链接和之前生成的特殊上传 URL。


就是这样!此调用的结果是我们最后返回的作业的链接。

第五步——什么也不做

好吧,并不是什么都没有,但这是一个有趣的问题。整个工作流程自动运行,无需人工交互。上一步启动了一个过程,完成后会将结果保存到 Dropbox。我们还需要做其他事情吗?并不真地。


API 绝对有可能因某种原因而失败。也有可能出现其他问题。我们也可能想通过电子邮件提醒某人有关更改的信息。老实说,这取决于你。


在我们的示例工作流程中,我们决定简单地检查作业并等待它完成。这是该代码步骤,它与我们之前的博客文章非常相似。我们检查作业,等待,然后再次检查。

这是我们结束工作流程的地方,但我们可以而且可能应该添加逻辑来检查作业的结果并执行某些操作。也许如果结果良好,我们什么也不做,但如果出现错误,我们就会发送电子邮件。 (顺便说一句,Pipedream 使发送电子邮件变得异常简单。)


不过,好的一点是我们可以稍后再决定。


Pipedream 的一项非常好的功能是,它可以轻松检查工作流程何时运行。例如,以下是过去执行的列表:


先前 Pipedream 工作流程执行的列表


您看到的错误来自我使用 API 并弄清楚它是如何工作的。您还可以单击其中任何一个并查看流经其中的数据。

结果

工作流程就位后,我们将新图像上传到 Dropbox 文件夹,在打开的选项卡中观看工作流程的触发,完成后检查结果。这是之前的:


卡宴,我的大臭狗

之后是这样的:


API调用后的Cayenne,好看多了,还是臭。

结果更加清晰,绝对是一个进步!您可以在此处创建您自己的工作流程副本: https ://pipedream.com/new?h=tch_3xxfJA。如果您想了解更多信息,请访问我们的文档,并分享您所构建的内容!


也发布在这里