プログラミングで印刷所への入稿を楽にしたい
経緯
以前
を書いたが、これよりもっと入稿作業を楽にできないか考え、作業したことをメモしていく。PSD の内容を画像に出力してみる
zip にする前に、 PSD データは「印刷所用のレイヤー結合データ」になるわけだが、
zip にする前に「現在の PSD データの見た目と以前入稿した見た目の差分」が取れて、入稿データに意図した変更を加えてしまっていないか?ってことを確認できたら楽なのでは?と考えた。
npm に psd (node 版を psd.js と呼ぶ)というのがあったので、これを deno から呼べないか試してみたが、 psd.js が ESM 化すらされていないので色々厳しそうだった。
そのため、いったん node で psd.js を呼ぶことにしてみる。
const PSD = require("psd");
const program = require("commander");
program.parse(process.argv);
const inputPath = program.args[0];
const outputPath = program.args[1];
console.log(`
inputPath: ${inputPath},
outputPath: ${outputPath},
`);
PSD.open(inputPath)
.then((psd) => {
return psd.image.saveAsPng(outputPath);
})
.catch(() => {
console.log("Error!!");
})
.then(() => {
console.log("Finished!");
});
Node.js は winget とかで Windows に入れることができるので
Windows から node を呼び出してこんな感じに使うことが出来る。
node index.js a.psd a.png
こうすると、前提として Git bash かなにかをいれていて sh などが使える状況ならば、という但し書きがつくが、イラストを格納しているディレクトリに以下のような shell script を置いたら、
#!/bin/sh
node ${PSD_PROGRAM_PATH} psd/2022-12-03.psd png/2022-12-03.png
./script.sh
で psd/2022-12-03.psd
の内容が png/2022-12-03.png
に出力されるようになった。
これを踏まえて、 png の画像の差分取得などができるようになると確実に入稿が楽になるのだが、今日はここまでで疲れたのでおしまいとする。
また気分が乗ったら続きをやる。
大きく方向転換
node.js の PSD ライブラリがつらいのと、レイヤー効果周りがやっぱり信用ならないかなあという気持ちになり、 Adobe Photoshop Script の利用に方向転換をした。
大方針
- Adobe Photoshop Script を使う
- Photoshop Script の利用を Photoshop のアクション機能を使ってひとつのアクションにしておく
- Photoshop Script をドロップレットを使ってポンと使う
- ドロップレットは、ドロップレットへのファイルのD&Dをトリガーにアクションの自動実行ができるため
- https://helpx.adobe.com/jp/photoshop/kb/5772.html
Adobe Photoshop Script とは
JavsScript である。
仕様はここ。
私は Adobe Photoshop CC 2022 を使っているのだけど、 たぶん仕様は 2020 が現在は最新ぽいので 2020 の仕様を眺めた。
Script で実現すること
- すべてのパスの削除
- 画像の結合
- このとき、特定の接頭辞がついているレイヤーグループは除外したい
- 箔押しレイヤーとかは結合したくないため
- このとき、特定の接頭辞がついているレイヤーグループは除外したい
書いたもの
結局 Photoshop の操作を JavaScript で自動化する方向に落ち着いた。