見出し画像

【PhotoshopScript】Document.saveAs()を使って、ファイルをJPEGで保存する

Document.saveAs()を使ってファイルをJPEGで保存するよ。

ドキュメントを読んでやり方を確認する

公式ドキュメントを見ると、

画像1

って書いてありますね。

一番左の列がメソッド名と引数の構成、左から二番目の列が引数の型、三番目が戻り値の型(今回は空なので戻り値なし)、一番右が備考です。

つまり、documentオブジェクトにはsaveAsというメソッドがあり、引数は順番に「保存先(File型のオブジェクト)、オプション(説明んとこ見ろよ)、コピーするかどうか(true/falseで)、拡張子のタイプ(Extention型)」を渡せば良いようです。

1:保存したいファイルの、Document型のオブジェクトを用意する

var target = app.activeDocument

とか、

var target = app.Documents.add()

とかで、保存したいドキュメントのオブジェクトを取得します

2:保存先のFileオブジェクトを用意する

var file = new File("hozon\\sakino\\path\\filename.jpg")

ってすればOK。

保存先アドレスを渡してFileオブジェクトの新しいインスタンスを作る。

3:JPEGSaveOptionsを用意する

「詳しくは説明のところ読めよ」って書いてあるところを読むと、保存オプションとして「JPEGSaveOptions」型の引数を用意しないといけないそうです。

ってことで

var options = new JPEGSaveOptions()

ほい用意。ナントカ型の引数を用意しろと言われたらnewで作ればOK。

これだけだと何の設定もできていないので、ドキュメントのリンクを辿ってJPEGSaveOptionsの設定方法を確認します。

画像2

こうだって。このうち、typenameはRead-onlyなので設定する必要なし(オブジェクトの種類を示すプロパティだし)。

あとは……どれがどの設定なのかちょっとよくわかんないですね……ということでフォトショのjpeg保存オプション画面を見てみます。

画像3

これで分かりそうですね。

そして、
・"scan(スキャン)"は形式オプションがプログレッシブのときだけ指定すればいい
・"matte(マット)"は背景色で、デフォルトはWHITEになっているのでわざわざ指定しなくていい
ということを考えると、指定するのは

options.embedColorProfile = false; // カラープロファイルを埋め込むか
options.formatOptions = FormatOptions.STANDARDBASELINE; // 形式オプション
options.quality = 10;  // 画質

の3つで良さそうです。

形式オプションをプログレッシブにしたり、背景色を白以外で保存したい時は、必要に応じてよしなに。

4:コピーとして保存するかどうか

var as_copy = ture;

これでOK。(コピーとして保存しないならfalse)

いちいち変数に入れなくて直接引数にbool値入れても全然いいですが、まあ変数に入れておいた方が後から見たときにわかりやすいか。

5:拡張子のタイプを指定する

Extension型の引数をお渡し、と言われているので、Extension型の説明を見に行きます。

画像4

Scripting Constantsの欄にあります。ということで既存の定数値なので、こういう場合は

var extension = Extension.LOWERCASE

と指定してあげればOKです。「型名.列挙値」という書式です。

6:どーん。

var target = app.activeDocument

var file = new File("hozon\\sakino\\path\\filename.jpg")

var options = new JPEGSaveOptions()
    options.embedColorProfile = false; // カラープロファイルを埋め込むか
    options.formatOptions = FormatOptions.STANDARDBASELINE; // 形式オプション
    options.quality = 10;  // 画質

var as_copy = ture;

var extension = Extension.LOWERCASE;

target.saveAs(file, options, as_copy, extension);

っと。これで保存完了です。

(念のため、target.saveAs()のところにはtry~catchを仕込んだ方が安全です)

関数として整理(コピペ用)

保存したいドキュメント、保存パス、画質が指定可能な関数です。
オプションのところは必要に応じて書き換えて使って下さい。形式オプションをプログレッシブにする時はjpeg_options.scanも設定するのをお忘れ無く。

function save_as_jpeg(target_document, file_path, quality){
    var file_obj = new File(file_path)

    var jpeg_options = new JPEGSaveOptions()
        jpeg_options.embedColorProfile = false; // カラープロファイルを埋め込むか
        jpeg_options.formatOptions = FormatOptions.STANDARDBASELINE; // 形式オプション
        jpeg_options.quality = quality;  // 画質

    var as_copy = ture;

    var extension = Extension.LOWERCASE;

    target_document.saveAs(file_obj, jpeg_options, as_copy, extension);
}

この記事が気に入ったらサポートをしてみませんか?