[Photoshop API]他形式での出力とサイズ変更を行う
※2020年1月現在、Photoshop APIはベータ版です。この記事の情報は正式版と異なる可能性がありますので、その点はご注意ください。
先日書いた下記記事の通り、現在ベータ版のPhotoshop APIで試行錯誤しています。
公式ドキュメントを参考に色々試しているのですが、まず認証で躓く・・・。
呼び出し方が悪いのか、「grant_type=password」の認証にまだ対応していないのか、エンドポイントが間違っているのか、理由は分かりませんが、アクセストークンの取得(リフレッシュトークンの交換も含む)が上手くいきません。
そもそもAdobe I/O ConsoleでPhotoshop APIの管理ができないのですが、まだプライベートベータ版なので仕方ないのかもしれません。
ただ、プレリリース用のトークン取得サイトでは問題なく取得できるので、このサイトで取得したアクセストークンを使って、できる範囲で検証を進めることにしました。
APIによる他形式での出力とサイズ変更
公式ドキュメントによると、“/renditionsCreate”エンドポイントによって、PSDファイルから新しいイメージレンディションやPSDファイルを作成できるようです。
私的には「レンディションってなに?」というAdobe製品の知識レベルなのですが、総務省の資料によると、
マルチレンディション(マルチプル-レンディション)とは、同一内容で表示形式が異なる複数のコンテンツを保持しており、必要に応じた形式で表示を可能とすること。
https://www.soumu.go.jp/main_content/000499710.pdf より
とあったので、ここで説明されているレンディションも『元ファイルから別の形式で出力したファイル』のことかな?と、勝手に認識しております。
話を戻すと、要するに「/renditionsCreate」エンドポイントを叩けばファイル形式の変換が行えるわけですね!
さっそく試してみました。
エンドポイントURL
https://image.adobe.io/pie/psdService/renditionCreate
ヘッダー
Content-Type: application/json x-api-key: (クライアントID) Authorization: Bearer (アクセストークン)
データ
入力ファイルとしてCCアセットのファイル直下にある「Example.psd」ファイルを指定し、出力ファイルとしてJPEGファイルとPNGファイルを指定しています。
また、「width」で出力する画像の幅をピクセル単位で指定することができます。
(高さは自動で算出されるため、指定する必要はありません。)
{ "inputs":[ { "href":"files/Example.psd", "storage":"adobe" } ], "outputs":[ { "href":"files/Example.jpeg", "width": 512, "storage":"adobe", "type":"image/jpeg" }, { "href":"files/Example.png", "storage":"adobe", "type":"image/png" } ] }
詳しいパラメーターについては下記リファレンスをご参照ください。
結果
上記リクエストを実行すると、非同期でジョブが開始され、ジョブステータスと出力したファイル情報をポーリングするhrefが返されます。
{ "_links": { "self": { "href": "https://image.adobe.io/pie/psdService/status/********-****-****-****-************" } } }
複数ファイルの変換
「/renditionCreate」エンドポイントでは、ファイルではなくフォルダを指定することもできます。
その場合、複数ファイルをまとめて変換することができます。
エンドポイントURL
https://image.adobe.io/pie/psdService/renditionCreate
ヘッダー
Content-Type: application/json x-api-key: (クライアントID) Authorization: Bearer (アクセストークン)
データ
入力元としてCCアセットのファイル直下にある「input_files」フォルダを指定し、出力先として「outputs」フォルダを指定しています。
このとき、「$FileName」や「$FileNum」といったトークンを使うことで、元のファイル名やカウンターを出力先ファイル名にすることができます(storageに「adobe」を指定した場合のみ)。
{ "inputs":[ { "href":"files/input_files", "storage":"adobe" } ], "outputs":[ { "href":"files/outputs/$FileName_$FileNum.jpeg", "storage":"adobe", "type":"image/jpeg" } ] }
詳しいパラメーターについては下記リファレンスをご参照ください。
結果
返ってくる結果はファイル単体を指定した場合と同様です。
{ "_links": { "self": { "href": "https://image.adobe.io/pie/psdService/status/********-****-****-****-************" } } }
今回はPhotoshop APIを使って、PSDファイルからのJPEG・PNG形式での出力とサイズ変更を試してみました。
特にフォルダ指定で一括出力できるのは便利ですね!
JPEG出力時には品質指定もできるので、使用する機会は頻繁にありそうです。
この記事へのコメントはありません。