コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

PhotoShopにてjsxを使ってpngファイルを保存する

前回の記事 の延長線として、jsxを使ってpngで保存する方法

環境

このスクリプトを試したPhotoShopは以下のバージョン

Adobe Photoshop バージョン : 20.0.4 20190227.r.76 2019/02/27: 1205725  x64

書き方

いくつかやり方はあるが、今回紹介するのは exportDocument

こちらのメソッドは下記の3つを指定する。

  • 保存先
  • 保存方法(基本は1択)
  • 保存のオプション情報
// 保存をするPhotoShopのファイルを取得する
// 今回は現在開いているドキュメントを取得する
var doc = app.activeDocument;

// Fileクラスで保存場所情報を作る
var saveInfo = new File("/Users/user_name/test.png");

// オプション情報を設定する
// 保存形式がSAVEFORWEBなのでExportOptionsSaveForWebをnew
var options = new ExportOptionsSaveForWeb();

// 保存するファイルの形式を指定
options.format = SaveDocumentType.PNG;

doc.exportDocument(saveInfo, ExportType.SAVEFORWEB, options);

オプションの種類

options で様々な設定ができる。

プロパティ名 値の型 説明
blur number ぼかしをかけます(初期値は 0.0
colorReduciton ColorReductionType 減色方法。選べる種類はドキュメント参照のこと(デフォルトは ColorReductionType.SELECTIVE
colors number パレットの色数(初期値は 256
dither Dither ディザ設定。選べる種類はドキュメント参照のこと(初期値は Dither.DIFFUSION
ditherAmount number ディザの設定量(初期値は 100Dither.DIFFUSIONのときのみ有効)
format SaveDocumentType pngやjpgなどのファイル保存形式。。(初期値は SaveDocumentType.COMPUSERVEGIF。選べる定数は COMPUSERVEGIF PNG PNG JPEG BMP のみ )
includeProfile boolean trueのときはカラープロファイルを埋め込む(初期値は false
interlaced boolean trueのときはインタレース有効(初期値は false
lossy number 不可逆圧縮の値(初期値は 0
matteColor RGBColor 透明領域のマットカラー、RGBColorオブジェクトをつくって指定する
optimized boolean trueのときは最適化をかけて小さくする(ドキュメント曰く互換性の低いファイルとなる)(初期値は false , formatが JPEG のときのみ有効 )
PNG8 boolean trueのときはPNGの形式が8bit,falseのときは24bit(初期値は true , formatが PNG のときのみ有効 )
quality number(0〜100) 画質のクオリティのパーセンテージ値(初期値は 60
transparency boolean 透過情報を有効にするか(初期値は true
transparencyAmount number 透明度ディザ量(初期値は 100 , transparencyがtrueのとき飲む有効)
transparencyDither Dither 透明度ディザ設定。選べる種類はドキュメント参照のこと(初期値は Dither.NONE
webSnap number Webパレットで近しい色を許容する設定量、Webスナップ(初期値は 0

Optionの値指定例

元画像は以下

f:id:shinkufencer:20200807234945j:plain

Photo by John-Mark Smith on Unsplash

options.colors = 1;

色数が全然ない

f:id:shinkufencer:20200807235016p:plain

options.webSnap = 100;

カラーパレットが減るのでベタ塗りのような画像になる

f:id:shinkufencer:20200807234958p:plain

注意点

かなりスペックの高いPCでも1枚の画像を保存するのに1秒前後はかかる。もしバッチ処理などをする場合はそこを加味して実行すること。

参考リンク