paint-brush
Cách tự động hóa quy trình làm việc với hình ảnh bằng API Photoshoptừ tác giả@raymondcamden
2,008 lượt đọc
2,008 lượt đọc

Cách tự động hóa quy trình làm việc với hình ảnh bằng API Photoshop

từ tác giả Raymond Camden7m2023/06/30
Read on Terminal Reader

dài quá đọc không nổi

Pipedream là một giải pháp mã thấp/không mã để xây dựng quy trình công việc chung. Nó ở trong cùng một không gian với Microsoft PowerAutomate và Workfront Fusion. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách sử dụng Pipedream để xây dựng quy trình làm việc dựa trên Dropbox.
featured image - Cách tự động hóa quy trình làm việc với hình ảnh bằng API Photoshop
Raymond Camden HackerNoon profile picture

Gần đây, chúng tôi đã thảo luận về cách các nhà phát triển có thể sử dụng API Photoshop . Trong bài đăng đó, chúng tôi đã chia sẻ một tập lệnh Node.js đơn giản sẽ gọi một trong các API bằng tệp được lưu trữ trong Azure.


Thật đơn giản — nhận mã thông báo truy cập, bắt đầu tác vụ API bằng tài liệu đầu vào, thăm dò ý kiến để hoàn thành, sau đó kiểm tra kết quả.


Tuy nhiên, đơn giản là tốt vì điều đó có nghĩa là dễ dàng tích hợp vào các quy trình công việc tùy chỉnh. Trong bài viết hôm nay, chúng ta sẽ làm điều đó.

quy trình làm việc của chúng tôi

Hãy bắt đầu bằng cách xác định quy trình làm việc của chúng ta sẽ làm gì. Hãy tưởng tượng chúng ta đang sử dụng nhà cung cấp dịch vụ lưu trữ đám mây, trong trường hợp này là Dropbox, để lưu trữ ảnh. Quy trình làm việc của chúng tôi sẽ theo dõi thư mục này và kích hoạt khi có thêm ảnh mới.


Khi hình ảnh được thêm vào, chúng tôi sẽ lấy tệp và gửi nó đến một điểm cuối chạy tính năng “AutoTone” của Lightroom. Tính năng này cố gắng sửa độ phơi sáng, độ tương phản và các vấn đề khác trong ảnh.


Như một ví dụ (mà chúng tôi đã đánh cắp ngay từ tài liệu ), đây là trước và sau khi cho thấy tác động của các chỉnh sửa:


Trước và sau khi tác động lên ảnh.

Khi API hoàn tất, chúng tôi sẽ lưu kết quả vào một thư mục khác trong Dropbox. Chúng tôi có thể ghi đè lên bản gốc, nhưng rất có thể, mọi người sẽ muốn có cả hai bản sao để họ có thể kiểm tra lần cuối xem họ thích bản nào hơn.

Nền tảng Worfklow

Đối với quy trình làm việc của chúng tôi, chúng tôi sẽ sử dụng Pipedream . Pipedream là một giải pháp mã thấp/không mã để xây dựng quy trình công việc chung. Nó ở trong cùng một không gian với Microsoft PowerAutomate và Workfront Fusion. (Và bạn cũng có thể sớm thấy các ví dụ từ chúng tôi trên các nền tảng đó.)


Pipedream thực sự giúp ích cho các nhà phát triển bằng cách làm cho các khía cạnh khó khăn hơn hoặc thậm chí nhàm chán của dự án trở thành “cắm và chạy”. Ví dụ: khi xác định yếu tố bắt đầu quy trình làm việc, trình kích hoạt, Pipedream đi kèm với một bộ khối mã dựng sẵn khổng lồ.


Khi chúng tôi bắt đầu trình bày cách chúng tôi xây dựng quy trình làm việc của mình, bạn sẽ thấy điều đó trong thực tế. Pipedream có một cấp độ miễn phí, vì vậy những người bạn đọc muốn theo dõi có thể làm như vậy sau khi đăng ký.


Nếu bạn chưa từng sử dụng Pipedream trước đây, hãy xem Đại học Pipedream xuất sắc của họ để biết phần giới thiệu về cách thức hoạt động của nó. Họ cũng có tài liệu xuất sắc. Cuối cùng, tác giả thân thiện của bạn ở đây cũng đã viết về Pipedream.


Bỏ qua điều đó, chúng ta hãy bắt tay vào xây dựng!

Bước một - Kích hoạt

Quy trình công việc của Pipedream bắt đầu bằng trình kích hoạt đại diện cho “sự kiện” sẽ khởi động quy trình của chúng tôi. Pipedream có rất nhiều trình kích hoạt tích hợp sẵn (và bạn có thể tự viết), và may mắn thay, trình kích hoạt “Tệp mới” trong Dropbox được hỗ trợ:


Thiết lập trình kích hoạt Pipedream


Sau khi chọn trình kích hoạt “Tệp mới”, bạn sẽ được cung cấp một giao diện đơn giản để định cấu hình nó:


Chỉ định các tùy chọn cho trình kích hoạt Tệp mới Dropbox


Trên cùng là khía cạnh xác thực. Tại đây, bạn có thể kết nối Pipedream với tài khoản Dropbox của mình. Hơn hết, khi bạn đã thực hiện điều đó một lần, bạn có thể sử dụng lại kết nối đó trong nhiều quy trình công việc.


Tiếp theo, ghi lại giá trị Đường dẫn. Bạn có thể nhập vào đây và Pipedream sẽ cố gắng tự động hoàn thành dựa trên tài khoản của bạn hoặc chỉ cần nhập một đường dẫn. Chúng tôi sẽ sử dụng /PSAPI_Input làm thư mục dự kiến sẽ nhận được hình ảnh.


Có thể bỏ qua hai cài đặt tiếp theo nhưng cài đặt cuối cùng, Include Link , nên được bật thành đúng. Chúng tôi sẽ cần liên kết đó để chúng tôi có thể cho API biết cách tìm nạp dữ liệu.


Đây là trình kích hoạt được định cấu hình cuối cùng cho quy trình làm việc của chúng tôi:


Bước kích hoạt được định cấu hình cuối cùng


Tóm lại, tại thời điểm này, chúng tôi đã định cấu hình quy trình làm việc để kích hoạt tự động ngay khi một tệp được thêm vào một thư mục cụ thể trong tài khoản Dropbox của chúng tôi.

Bước hai - Nhận URL tải lên

Khi API Photoshop chạy, nó mong đợi tối thiểu hai thứ — một URL đầu vào và một URL đầu ra. Về cơ bản, nơi để đọc đầu vào của nó và nơi lưu trữ kết quả.


Đầu vào của chúng tôi sẽ là tệp mới được thêm vào Dropbox. Đầu ra của chúng ta sẽ là vị trí của hình ảnh được Lightroom chỉnh sửa.


Để hỗ trợ điều này, chúng tôi cần yêu cầu Dropbox tạo một URL đặc biệt có thể được sử dụng để lưu trữ dữ liệu. Pipedream có rất nhiều hành động Dropbox tích hợp nhưng thật không may, không có hành động cụ thể này.


May mắn thay, Pipedream cho phép bạn tạo một bước với mã tùy chỉnh nơi nó đã xử lý xác thực cho bạn. Hãy nhớ rằng trong trình kích hoạt, chúng tôi đã chỉ định một tài khoản Dropbox hiện có. Bởi vì chúng tôi đã làm điều này, sau đó chúng tôi có thể viết mã và để Pipedream xử lý xác thực.


Bằng cách tham khảo API Dropbox , chúng tôi tìm thấy điểm cuối get_temporary_upload_link chính xác là những gì chúng tôi cần.


Trong Pipedream, chúng tôi thêm một bước mới và chọn “Sử dụng bất kỳ API Dropbox nào trong Node.js.” Điều này cung cấp cho chúng tôi mã soạn sẵn đánh vào một điểm cuối mẫu:

Quan trọng nhất — lưu ý thông tin xác thực được cung cấp tự động. Tất cả những gì chúng ta cần làm sau đó là chỉnh sửa điểm cuối và đặt đầu vào của chúng ta:

Lưu ý rằng chúng tôi đang sử dụng đường dẫn là một thư mục khác, /PSAPI_Output . Giá trị sau đó, ${steps.trigger.event.name} , thể hiện việc sử dụng thông tin trước đó trong quy trình làm việc của chúng tôi, cụ thể là tên tệp của sự kiện đã kích hoạt quy trình làm việc của chúng tôi và tên của chính tệp đó.


Mã kết thúc bằng cách trả về kết quả của lệnh gọi API, trong trường hợp của chúng tôi, đây sẽ là một URL đặc biệt mà chúng tôi có thể sử dụng với lệnh gọi API của mình.

Bước ba - Nhận mã thông báo truy cập

Trong bài đăng trên blog trước đây của chúng tôi, chúng tôi đã thảo luận cách lấy thông tin đăng nhập cho API Photoshop và sau đó cách sử dụng chúng trong mã để nhận mã thông báo truy cập. Trong Pipedream, chúng tôi có thể thêm một bước vào quy trình làm việc của mình để chạy mã tùy chỉnh.


Bạn đã thấy điều đó ở bước trước khi chúng tôi nhấn API Dropbox. Pipedream hỗ trợ cả Node.js và Python nên bạn có một số tùy chọn ở đó. Chúng tôi sẽ thêm một bước mã mới và đặt tên là getAccessToken .


Bước này sẽ chịu trách nhiệm sử dụng thông tin đăng nhập của chúng tôi để tạo JWT và đổi lấy mã thông báo truy cập đó.


Trong bài đăng trên blog trước đó, mã đã sử dụng gói @adobe/jwt-auth để đơn giản hóa quy trình. Tuy nhiên, gói này không hoạt động như một bản nhập ES6 mà Pipedream hỗ trợ. May mắn thay, chúng ta có thể hoán đổi sang một gói NPM khác, jsonwebtoken . Chúng ta hãy xem mã:

Vì vậy, một vài điều ở đây. Đầu tiên, mọi bước mã Node Pipedream đều sử dụng một biểu mẫu như sau:

Hàm run được gọi tự động và truyền dữ liệu từ bất kỳ bước nào trước đó cũng như một trình xử lý ( $ ) cho các hoạt động khác mà chúng tôi sẽ không cần. Về cơ bản, chúng tôi sẽ đặt nhập khẩu của mình lên hàng đầu và logic của chúng tôi bên trong.


Bạn có thể thấy một tập hợp các biến được sao chép từ môi trường — không ngạc nhiên — Pipedream cũng cho phép chúng tôi xác định các biến môi trường tùy chỉnh.


Khối mã tiếp theo tạo JWT của chúng tôi. Đây chủ yếu là bản soạn sẵn, nhưng đặc biệt chú ý đến phần jwtOptions . Biến này, "https://ims-na1.adobelogin.com/s/ent_ccas_sdk": true, , là biến đặt phạm vi cho mã thông báo của chúng tôi và được yêu cầu để hoạt động với các API.


Sau khi JWT được tạo, nó có thể được gửi đến điểm cuối Adobe chung để tạo mã thông báo truy cập. Phần logic cuối cùng là trả lại mã thông báo đó. Nếu bạn nhớ ở bước trước, bất cứ thứ gì chúng tôi trả lại đều có thể được sử dụng sau này. Bạn sẽ thấy điều này trong hành động sớm.

Bước bốn - Gọi API Lightroom Autotone

Bây giờ, đã đến lúc bắt tay vào công việc. Trình kích hoạt của chúng tôi đã cung cấp cho chúng tôi một liên kết đến hình ảnh mới. Bước mã tiếp theo đã tạo một liên kết để chúng tôi tải lên kết quả cuối cùng. Sau đó, chúng tôi đã nhận được mã thông báo truy cập. Chúng tôi đã có mọi thứ cần thiết để bắt đầu quá trình.


Một lần nữa, chúng ta sẽ thêm một bước Node.js vào quy trình làm việc của mình. Đây là trong hành động.

API Autotone yêu cầu một số tham số, trong trường hợp này là giá trị đầu vào và đầu ra. Trong trường hợp của chúng tôi, chúng tôi chuyển liên kết từ trình kích hoạt và URL tải lên đặc biệt được tạo trước đó.


Và thế là xong! Kết quả của cuộc gọi này là một liên kết đến công việc mà chúng tôi trả lại ở cuối.

Bước Năm — Không làm gì cả

Ok, không hẳn là không có gì , nhưng đây là một câu hỏi thú vị. Toàn bộ quy trình công việc này chạy tự động mà không có sự tương tác của con người. Bước trước khởi động một quy trình, khi hoàn thành, sẽ lưu kết quả vào Dropbox. Chúng ta có cần phải làm gì nữa không? Không thực sự.


Hoàn toàn có thể API bị lỗi vì một lý do nào đó. Có thể một cái gì đó khác cũng có thể đi sai. Cũng có thể chúng tôi muốn thông báo cho ai đó về sự thay đổi, có thể qua email. Thành thật mà nói, nó tùy thuộc vào bạn.


Trong quy trình làm việc mẫu của chúng tôi, chúng tôi quyết định chỉ cần kiểm tra công việc và đợi nó hoàn thành. Đây là bước mã đó và nó khá giống với bài đăng trên blog trước đây của chúng tôi. Chúng tôi kiểm tra công việc, chờ đợi và kiểm tra lại.

Đây là nơi chúng tôi kết thúc quy trình công việc, nhưng chúng tôi có thể và có lẽ nên thêm logic để kiểm tra kết quả của công việc và thực hiện điều gì đó. Có lẽ với kết quả tốt, chúng tôi không làm gì cả, nhưng nếu có lỗi, chúng tôi sẽ gửi email. (Và nhân tiện, Pipedream làm cho việc gửi email trở nên dễ dàng một cách lố bịch.)


Điều tốt là chúng ta có thể quyết định điều đó sau.


Một tính năng thực sự hay của Pipedream là nó giúp bạn dễ dàng kiểm tra khi quy trình công việc đã chạy. Ví dụ: đây là danh sách các lần thực hiện trước đây:


Danh sách các lần thực thi quy trình Pipedream trước đây


Các lỗi mà bạn thấy xuất phát từ việc tôi chơi với API và tìm hiểu cách thức hoạt động của nó. Bạn cũng có thể nhấp vào bất kỳ trong số chúng và xem dữ liệu chảy trong đó.

Kết quả

Với quy trình làm việc sẵn có, chúng tôi đã tải một hình ảnh mới lên thư mục Dropbox, xem quy trình kích hoạt quy trình làm việc trong một tab đang mở và khi hoàn tất, hãy kiểm tra kết quả. Đây là trước đây:


Cayenne, con chó hôi thối lớn của tôi

Và đây là sau:


Cayenne sau cuộc gọi API, đẹp hơn, vẫn hôi.

Kết quả là sắc nét hơn, và hoàn toàn là một cải tiến! Bạn có thể tạo bản sao quy trình làm việc của riêng mình tại đây: https://pipedream.com/new?h=tch_3xxfJA . Nếu bạn muốn tìm hiểu thêm, hãy truy cập tài liệu của chúng tôi và chia sẻ những gì bạn đã xây dựng!


Cũng được xuất bản ở đây