このエントリーをはてなブックマークに追加 RSS mailform
見る


銀の月動画計画 > あにめはっく.jp > 素材屋トップ > 制作ツール > 一括色置換スクリプトg_changer
イラスト制作ツール - 一括色置換スクリプトg_changer

複数画像の色を置換するphotoshop scripting ■Photoshop

2008-03-13 20:03:00 update

キャラクターなどを彩色するときに、
同じ色の部分を一括で変更するためのスクリプトです。
Photoshopで実現できないものかと思って作ってみました。

ただし、線を二値化するタイプの絵じゃないとダメだったり、
やたら動作が遅かったりするので
作者本人はほとんど使っていません。
が、Photoshop Scriptingの参考になるかもしれませんので当分は置いておきます。




ご注意

  • スクリプトの作成者は玉英です。
  • Photoshop用スクリプトです。JavaScriptで記述されています。
    Photoshop Scriptingがデフォルトで使用できるのは PhotoshopCS以上 です。
    Photoshop7.0ではプラグインをインストールする必要があります。
    それ以前のverおよび、Photoshop Elementsなど廉価版では動作しません。
    最新のverで動くかどうかは確認していません。
  • Windows版のPhotoshopCSで動作確認しています。仕様上はMacでも動く筈です。

はじめての方はここをクリックして使用規約をご確認ください。

スクリプトの使い方
Photoshop Scriptingを使ったことのない方向けに、基本的な使い方を説明します。

まず、ダウンロードしたlzhファイルを解凍してください。
  • 一括色置換データ作成.js
  • 一括色置換forアニメ素材.js
  • 一括色置換forアニメ素材[すべての画像に適用して保存].js
の3つのファイルができます。
これはJavaScriptでかかれたプログラムです。
Photoshop CSをお使いの場合、「Photoshop CS\プリセット\スクリプト\」にコピーしてください。
他のverのPhotoshopをお使いの場合は、このページの一番下で紹介しているサイト等を参考に、適当なフォルダにコピーしてください。

Photoshopを再起動したら、
「ファイル」→「スクリプト」で読み込んで使うことができます。
読み込み

「スクリプト」の項目の一番下の「参照」をクリックするとデフォルトでインストールされているサンプルスクリプトが使えます。

一括色置換データ作成.js の使い方
一括色置換データ作成.js は、RGBモード、レイヤー2枚からなる画像の
レイヤー間のデータを比較して、色が異なる部分を探し、
変更前と変更後の色のRGB値をテキストファイルに書き出すスクリプトです。

ソースはこちら(.txtになってるので.jsに変更して保存してください。utf-8)


まずphotoshopでキャラ設定画像を開きます。

初期

レイヤーは1枚に統合されています。
この画像では背景は透明になっていますが、白でもなんでもかまいません。

このレイヤーを複製し、
変更したい部分だけを「塗りつぶしツール」で新しい色に塗り替えます。
「許容量」は0、「アンチエイリアス」「隣接」のチェックは外してください。

塗り替え

変更前の画像のレイヤーが下、変更後の画像のレイヤーが上になっているのを
確認したら
「ファイル」→「スクリプト」→「一括色置換データ作成」でスクリプトを読み込みます。

動作中

動作中はこんな状態になります。
激しく窓が出たり消えたりしますがそういう仕様ですのでご安心を。



色比較が終了すると「設定ファイル名を指定して保存します。」というダイアログが出ます。

保存ダイアログ

適当なフォルダに適当な名前をつけて保存してください。
なお拡張子は自動的にはつきませんので、.datとか.txtとか適当につけてください。
中身はただのテキストファイルなので拡張子つけなくても読めるとは思います。

終了
終了

保存した色指定データはこんなかんじ
テキストファイルなのでもちろん手動で書き込むこともできます。
各行左から元色のR,G,B,変更後のR,G,Bの値(0-255) TAB区切りです。


注意事項
  • レイヤーは2枚じゃないとエラーが出ます。
  • ビット深度については調べていないので、エラーが出たらご報告いただけると助かります。
  • photoshopは、指定色での範囲選択時に内部的にlabカラーを使っているので、多少の誤差が出ます。近い色を使っていると、正確に色が置き換わらない可能性があります。
  • アンチエイリアスがかかっている画像でも使えなくはないでしょうが、ものすごく処理時間がかかると思います。


一括色置換forアニメ素材.js の使い方
一括色置換データ作成.js で記録したテキストデータを読み込んで色を変更します。

ソースはこちら(.txtになってるので.jsに変更して保存してください。utf-8)


色指定データと同じ色で彩色した画像を、photoshopで開いてください。

元絵

今はレイヤー3枚とも緑髪です。

「ファイル」→「スクリプト」→「一括色置換forアニメ素材」でスクリプトを読み込みます。

読み込む

すると「設定ファイルを選択してください。」というダイアログが出ます。
開くダイアログ

先ほど保存したファイル(これ)を選択して、OKをクリックします。

あとは待つだけ


終了
終了


あがり

レイヤー3枚とも変更されています。


注意事項
  • psdだけでなくbmp,フルカラーpngでも使えます。
    gifでも動くことは動きますが、パレットが違うのでおかしなことになります。
  • photoshopは、指定色での範囲選択時に内部的にlabカラーを使っているので、多少の誤差が出ます。近い色を使っていると、正確に色が置き換わらない可能性があります。
  • アンチエイリアスがかかっている画像でも使えなくはないでしょうがものすごく処理時間がかかると思います。


一括色置換forアニメ素材 [すべての画像に適用して保存].js の使い方
これは 一括色置換forアニメ素材.js の改造版です。
基本的な機能は同じですが、こちらは
  • photoshop上で開いているすべての画像に適用される
  • 色の置き換えが終わったら上書き保存される
ので扱いに注意してください。
作業対象ファイルをいったん作業用フォルダ等にコピーしてから、
phtoshopでまとめて開いてスクリプトを起動する、
という使い方を想定しています。

ソースはこちら(.txtになってるので.jsに変更して保存してください。utf-8)



Photoshop Scriptingて何?

Photoshop ScriptingはPhotoshopをいろいろいじれる便利な機能です。私はJavaScriptを使いましたが、他にAppleScript,VBでも書けるようです。自分の得意な言語で書けばいいと思います。
JavaScriptで実現できない機能はアクションとかVBとか外部ソフトを呼んで実現できますので、わりとなんでもできます。
ただ、ピクセル単位で色を取得する等は苦手みたいです。そういうのはフィルタを使えということでしょうか。
チェック柄を描画する、座標を数値で指定して画像を切り取る、等の用途で使っている方が多いようです。

Photoshop Scriptingと同様の機能は他のadobe製品でも使えるらしいです。

私の作ったスクリプトは、ソースに細かくコメントを入れていますので、もっとスマートに書ける方は改造していただければと思います。


Photoshop Scripting(Javascript)を扱っているサイト




以上
ver.1.1 2006/07/22
ver.1 2006/07/20