■CALENDAR■
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<<前月 2017年09月 次月>>
■LOGIN■
現在のモード: ゲストモード
USER ID:
PASSWORD:
■NEW ENTRIES■
■RECENT COMMENTS■
■CATEGORIES■
■ARCHIVES■
■LINK■
■PROFILE■
■POWERED BY■
BLOGN(ぶろぐん)
BLOGNPLUS(ぶろぐん+)
■OTHER■

PSD自動縮小/書き出しスクリプト
JavaScript(笑)

 ご無沙汰です。
 まきのです。

 イベント以後何をしていたのかというと、知人よりタダでもらったMTBを修理して乗り回していたり親族の引越しなどに駆り出されたり週末にはヲタでない人との飲み会に出席したりカップラーメン食べようとして誤って太腿に熱湯をかけてしまい全治1週間の大怪我を負ってしまうなど比較的非ヲタ的な事をしていたのですが、9月に入りそろそろ次回の仕込みとかやっていかなきゃいけないなと思いまして、今回は同人的QCを行ってみようと思います。
 QCなんて言ってますが、要は夏コミ進行での作業面での効率化を考えてみようと思います。


 今回のなんちゃってデジコミ風ミナモCG集「ミナモちゃんねる」では、これまでのスタイルの画像収録形式とは違っています。
 基本的なファイル名の法則などは従来と同じですが、そのファイルの生成方法は大きく変わっています。
 これまでのCG集では2年ほど前に作ったPhotoShopの画像縮小/書き出しスクリプトを使って画像の縦横何れか長いほう(長手方向)を1024pxに落としてJPG/BMP/PNGに書き出しています。
 これが一般的に言われる収録画像ということになります。
 去年以前はこの収録画像を直接HTMLで表示していたのですが、さすがに長手方向1024pxの画像は大きすぎるので、上記スクリプトによって生成された長手方向1024pxの画像を更に縦横50%に縮小したものをHTML表示用として別に収録することとしました。

 最初はこの方法を使って長手方向1024pxの50%縮小のHTML用画像を作成したのですが、画像が小さすぎて台詞や描き文字が読みにくくなってしまうという問題に行き着きまして、結局旧来の長手1024pxの収録画像を直接HTML表示するようにしました。
 更に同じ画像の差分が平均2枚以上存在するような今回のCG集では、画像を生成するだけでもかなりの手間を要します。
 画像縮小/書き出しスクリプトでは出力ファイル名を一応は変えられるようにしていますが、あらかじめ収録形式のファイル名(pic001..pic002..pic003....)にしておく方が効率的にもよいので、収録ファイルをそのように変更してスクリプトにかけています。
 ですがひとつのファイルにレイヤカンプとして複数の差分がある場合、レイヤカンプ毎にまた別にファイル(pic001a..pic001b..pic001c....)を用意しなければなりません。
 こうして収録枚数分のソースファイルを用意するだけでもかなりの手間がかかってしまいました。
 手間だけでなく同じ重複ファイルが増えることになるのでPCリソース的にも非効率となってしまいます。必要ないレイヤをいちいち削除するというのもやはり時間的に効率悪いですし、だいたい締め切り前にそんなことはまず考えないわけでして。

 PSD自動縮小/書き出し機能拡張スクリプト Rev.03 reduce03.jsx(8KB)

 そこで画像縮小/書き出しスクリプトを改良してレイヤカンプを全部一度に書き出せるようにしようと思います。
 その他従来のスクリプトを使っていて不便な点を改善しようと思います。

 基本的には

 1)UI化
 2)ファイルに内包しているレイヤカンプを全て書き出し

 3)書き出し画像を選択できるようにする
 4)連続処理ができるようにする

 という目標で作業を進めます。

 とりあえずはレイヤカンプについてPhotoshop CS3 JavaScript Refあたりで行って、layerCompsクラスでレイヤカンプを扱うにはどうするのかを調査。
 JavaScript Refの記述って、例えば

 activeDocument.layerComp["myLayerComp"].comment = "View from shoreline";

 の記述を

 activeDocument.layerComp(“myLayerComp”).comment = “View from shoreline”

 とかしてるから、そのままコピペしてもエラーになるので、何が原因かよく解からなくくて暫く悩みこんでしまいましたね。
 ExtendScript Toolkit 2 もフォントが見づらくて全角なのか半角なのかよく解からんし。
 まあ久々のjavascriptだったので記述自体の問題って気づくのか遅すぎのオレが悪いのですが。

センスねえー

 UI化は以前のレイヤ拡張スクリプトである程度のノウハウはあるので、それをコピペして数値いじってそれとなく終了。
 とはいえどういう機能を実装するのかによってUIの内容も変わってくるので単にUI化をしてもあまり大きな意味はないことに気づいてしまいました。
 とりあえずはファイル参照ボタンみたいなのを作って、UI上で作業を完結できるようにしてみます。
 ファイル参照ボタンとテキストボックス(別に編集できる必要もないのですが)を設置しましたが、さて困った。
 イベント処理をやったことないのです。
 参照ボタンが押されたらファイルオープンダイアログを開くだけなのですが、だいたいイベント処理がよくわからなくてVB投げ出した経緯があったりしたので、これはレイヤカンプ書き出し以前にこのプロジェクトは撃沈か?、とかなり暗雲が立ち込めたりしてしまいました。

 web上のJavascript入門のサイトで必死にonMouseイベントについて調べたりしてやっとソレっぽい記述があったのてこれもコピペ。
 コピペ厨はいつになっても物事を覚えないというのは本当ですね。
 身をもって体験。
 ともあれonMouseイベント解明(?)によって参照ボタンよりファイル名を登録して実行することができます。

 このまま1回だけ実行するより現在の設定を反映させたまま連続で処理できるようにするために縮小/書き出し部分を別関数にしてOKボタンのonMouseイベントにぶち込みます。
 これで終了ボタンが押されるまで何回でも縮小/書き出し作業が続けられます。

 さて、残りはレイヤカンプを連続で書き出しするためにはどうしたらいいか?。
 PSDファイルのレイヤカンプ数を取得して0ならレイヤカンプなしなので処理しないようにして、1以上ならレイヤカンプありだからレイヤカンプを1(最初の)に適用してdo~whileループにして最後に判断すればいいんじゃないか・・・(以下略。
 とかやってレイヤカンプを全部出力できるようにしたのですが、別関数化すればもっと楽だったかも。ループ出口の条件判断の適当さはかなり恥ずかしい気が・・・。
 ま、動けばいいんですけどね!(恥)。


 レイヤカンプの上からそれぞれを別のファイル名にしていかねば書き出す意味が無いのでベースとなるファイル名+ ""(付加ファイル名なし),a,b,c~,x,y,zとボクが使ってる法則で付加名をつけましたが、正直1つの画像の差分が26枚越えることはほぼないと思われるのでこれで十分でしょう。
 あとおまけでPICTファイルも書き出せるようにしたのですが、多分使わないでしょう。
 作業効率上、縮小してからレイヤカンプ動かしているので、(レイヤカンプの内容が)オリジナルとは違うとか警告が出てるのですが、とりあえず今のところ書き出しデータには問題がないようなので放置の方向で。

 とりあえず動くようになった(と思う)のですが、これで前回の「ミナモちゃんねる」のようなレイヤカンプを使用した差分ファイルの書き出しがかなり楽になったはずです。 何しろひとつのファイルを処理するだけで複数の差分が自動生成できるのですから。

 かなり同人QC的にもよい点が付くはずだと自負してます。
 本当か?。
| ヲタク::絵描き | 09:54 PM | comments (x) | trackback (x) |
PAGE TOP ↑