CS3 でスライスロールオーバー
Fireworks と DW に機能が移動されたらしく、http://subtech.g.hatena.ne.jp/cho45/20070805/1186248934 の方法はつかえない。
Photoshop だけでやるには、ロールオーバースライス一個一個を名前変更したりしながら保存するアクションを書くしかない感じ。このアクションが微妙にクセがあるのがあれなんだけど……
スクリプト機能をちゃんと調べてみるか。
- 現在の状態を Web 用の保存 (ユーザ定義のスライスのみ)
- ロールオーバー用のレイヤーをアクティブに
- ロールオーバによって変化があるスライスの名前をもとのスライス名に -over をつけたものに。
- 現在の状態を Web 用に保存 (ユーザ定義のスライスのみ)
- 保存後に -over がついているのとついていないのを縦連結
レイヤーの選択と、変化したかどうかがとれればつくれるはずなんだけど
Photoshop スクリプティングガイドを読む
インストールディレクトリ (/Applications/Adobe Photoshop CS3) の「スクリプティングガイド」に PDF がある。
あー DOM つかうんだ。ってあれ、DOM な関数名じゃなくない?
なんか JS のサンプルコードが全部セミコロン省略だ。
お、alert(); つかえる。
.jsx にして最初のほうに
#target photoshop
と書いておくと、Finder からダブルクリックで実行できるようになる。(ExtendScript Toolkit 2 とかいうのが起動する。これは単体だとデバッグ環境になってるみたい)
vim なら http://subtech.g.hatena.ne.jp/secondlife/20060727/1153990447 をいれておくと
//#!open -a /Applications/Utilities/Adobe\ Utilities.localized/ExtendScript\ Toolkit\ 2/ExtendScript\ Toolkit\ 2.app #target photoshop
をファイル最初に書いておくだけで ,e とかで実行できるようになってデバッグしやすいかも
PSS Slice
もしかしてスライスはあつかえない? なんかドキュメント検索しても slice の項がないんだけど……
ExtensScript Toolkit の Object Library を検索しても slice は一切ないな……だめだこれ
せめてウェブ用に保存の「ユーザ定義スライスのみ」ぐらいができたらあとはどうにでもできるのに……(保存先を変えてごにょる)
ScriptListener プラグインをいれて、記録をとると、はげしく内部的な情報がアクション記録時にログされるようになって、これコピペするとできるっぽい。まだやってないけど、っていうかこのログ読めないんだよ!!!
アクションを使ってウェブ用に保存をしたときは、ユーザ定義のスライスのみ保存する、ということができない。
File 操作
File 操作とかは JavaScript Tools Guide CS3 とかいうのにのってる。
Photoshop でロールオーバーな画像を一括保存する JS
できた!
http://lab.lowreal.net/trac/browser/c/photoshop/SaveSlicesWithRollOver.jsx
over っていう名前がついたレイヤーを (レイヤーセットのほうがいいきがしてきた。あとで変えよう)
- 表示させた状態
- 表示させない状態
でそれぞれ保存して、デフォルトの名前っぽいスライスを削除
保存先はファイルと同じディレクトリの filename-slices 以下になる
- filename.psd
- filename-slices/
- images/
- hogehoge.png
- fugagua.png
- over/
- images/
- hogehoge.png
- fugagua.png
- images/
- images/
あと同じファイルの場合は over のほうを削除して、違う場合は連結させたい。でもバイナリ比較ができないっぽい予感。read して比較するだけなら問題ないかな。
http://lab.lowreal.net/trac/changeset/830
連結までやるようにした。結構いろいろハマった……
インデックスカラーな画像は doc.changeMode(ChangeMode.RGB); してあげないと duplicate できない。これは普通に UI からやってもそうなんだけど
あと
http://lab.lowreal.net/trac/changeset/831
レイヤーセット (グループ) にするようにした。
手順としては
- ロールオーバーしたときの画像にするレイヤーセットを over という名前にしとく
- 普通にスライスをきる
- Web 用に保存で各スライスのフォーマットとかを指定して「完了」
- このスクリプト実行
フォーマットを指定するとき、gif だと連結ができない。あと連結後のときは普通に保存しているだけなので、Web 用の保存のオプションはきかない。(ロールオーバーしない画像のオプション指定が主)
gerry++
dutuu++
gerry++
そんなお腹痛いってわけじゃないのに、トイレいったら下痢ってびびる
user/pass の設定化
ハードコードしないのは、おもむろに svn につっこんでも大丈夫なようにだなぁ……
だから最初からそうする