Photoshop UXP tiff,jpegといった決まったフォーマットで保存する

UXP

Photoshop UXP上のPhotoshop moduleではsaveメソッドが実装されています。これを使えば簡単にドキュメントの上書き保存が実行可能です。詳しくはドキュメント。
ただし違ったフォーマットで保存するとなると話は違ってきます。ドキュメントを見てもそこに対して言及されていません。ということでbatchPlayで行ってみましょう。もちろん保存用のbatchPlay用のコードはAlchemistからコピーします。以下tiff保存用のコード。

pathのプロパティにファイルパスをstring型として渡せば完了。ExtendScriptに慣れている方もそういう風に考えるでしょう。というか私がそうでした。

何故かエラーが出る。

以下のようにクローム上でエラーが表示されます。

Error: invalid file token used

無効なfile tokenが使われている???string型のfilePathを渡せば良いのではないの?全くわけがわからない中以下のようなフォーラムの話題を見つけました。Saving a new Photoshop document (advanced)これによると。

persistent folder(string型のpathではない)を取得(上の例だとlocal storageから取得、おそらく事前にlocal storageに保存している場合と思われる)。getEntryForPersistentTokenメソッドからpersistent folderをentry folderに変換。そこからさらにcreateFileメソッドでファイル名を渡す。最後にcreateSesssionTokenメソッドbatchPlayに渡せるtokenが取得できます。これらの過程を以下のように書き直しました。

getFolderメソッドでダイアログからentry folderを取得。そこからcreateFileメソッドでファイル名を渡したりしてtokenに変換しています。正直まだまだよくわかってないですがbatchPlayにpathを渡す時に以上の過程が必要なのだけはわかりました。しかし問題はまだ終わっていません。何故ならgetFolderメソッドで確かにfolder entryは取得できますがそもそもstring型のデータをentry型に変換するメソッドが見つかりません。つまりUXP上でファイル保存メソッドを実行するには同じファイルとして上書きする場合を除いて一々ダイアログを呼び出さなければならないからです。公式のサンプルコードもあれこれ見てみましたがダイアログから呼び出す形での保存メソッド意外のコードを発見できませんでした。もしできないとしたらこれはかなり致命的だと思います。

Beer 寄付してサイトを応援する。