Closed4

プログラミングで印刷所への入稿を楽にしたい

mirko-sanmirko-san

PSD の内容を画像に出力してみる

zip にする前に、 PSD データは「印刷所用のレイヤー結合データ」になるわけだが、

zip にする前に「現在の PSD データの見た目と以前入稿した見た目の差分」が取れて、入稿データに意図した変更を加えてしまっていないか?ってことを確認できたら楽なのでは?と考えた。

npm に psd (node 版を psd.js と呼ぶ)というのがあったので、これを deno から呼べないか試してみたが、 psd.js が ESM 化すらされていないので色々厳しそうだった。

https://www.npmjs.com/package/psd

そのため、いったん node で psd.js を呼ぶことにしてみる。

index.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 に入れることができるので

https://winget.run/pkg/OpenJS/NodeJS

Windows から node を呼び出してこんな感じに使うことが出来る。

node index.js a.psd a.png

こうすると、前提として Git bash かなにかをいれていて sh などが使える状況ならば、という但し書きがつくが、イラストを格納しているディレクトリに以下のような shell script を置いたら、

script.sh
#!/bin/sh

node ${PSD_PROGRAM_PATH} psd/2022-12-03.psd png/2022-12-03.png

./script.shpsd/2022-12-03.psd の内容が png/2022-12-03.png に出力されるようになった。

これを踏まえて、 png の画像の差分取得などができるようになると確実に入稿が楽になるのだが、今日はここまでで疲れたのでおしまいとする。

また気分が乗ったら続きをやる。

mirko-sanmirko-san

大きく方向転換

node.js の PSD ライブラリがつらいのと、レイヤー効果周りがやっぱり信用ならないかなあという気持ちになり、 Adobe Photoshop Script の利用に方向転換をした。

大方針

  • Adobe Photoshop Script を使う
  • Photoshop Script の利用を Photoshop のアクション機能を使ってひとつのアクションにしておく
  • Photoshop Script をドロップレットを使ってポンと使う

Adobe Photoshop Script とは

https://helpx.adobe.com/jp/photoshop/using/scripting.html

JavsScript である。
仕様はここ。
https://github.com/Adobe-CEP/CEP-Resources/tree/master/Documentation/Product specific Documentation/Photoshop Scripting

私は Adobe Photoshop CC 2022 を使っているのだけど、 たぶん仕様は 2020 が現在は最新ぽいので 2020 の仕様を眺めた。

Script で実現すること

  • すべてのパスの削除
  • 画像の結合
    • このとき、特定の接頭辞がついているレイヤーグループは除外したい
      • 箔押しレイヤーとかは結合したくないため

書いたもの

https://github.com/mirko-san/photoshop_scripts/blob/cf8d32b520ce67ab623300b7fb6f4e7583c8f6c4/m_flatten.jsx#L1-L47

このスクラップは2022/12/24にクローズされました