Photoshopでレイヤー内の特定の色(グリーンバックなど)を自動で削除するスクリプトを紹介します。
背景色をまとめて処理したい場面や、複数レイヤーを一括で切り抜きたい作業で役立ちます。

目次
スクリプトを使用するメリット
- 特定の色(例:グリーンバック)を自動で選択して削除できる
- 複数画像をレイヤーとして読み込み、全レイヤーへ一括処理できる
- 手作業で消去する手間を省き、大量の画像処理を効率化できる
🟠 注意点
- 対象色はRGB値ではなくLab値で指定する必要があります
- 許容値などの色域範囲はコード内で変更できます

スクリプトで特定の色を削除
このスクリプトを実行すると、全レイヤーに対して指定した色域を選択・削除します。
STEP.1 スクリプトを格納
- 下記のコードをテキストエディタ等に貼り付けて保存します。
スクリプトを実行すると全レイヤーに適用されます。
対象が1レイヤーのみの場合は、hideLayer();をコメントアウトして実行することも可能です。
(連続処理時に表示順を制御するため、レイヤーを順次非表示にしています。
)
Photoshopのほかの操作は、まとめからご覧いただけます。
あわせて読みたい


Photoshopの使い方|保存・レイヤー・一括処理から探す
Photoshopでやりたい作業から記事を選べます。複数の画像に同じ編集を繰り返す場合は「アクション・一括処理」、JSXファイルを初めて使う場合は「スクリプトの導入・実…
CGM_removeBgColor.jsx
function removeBgColor(){
var topLayer = app.activeDocument.layers[0];
app.activeDocument.activeLayer = topLayer;
do {
selcol(88, -79, 81); //指定色域 ※RGBじゃなくてLabの値を入れる!
hideLayer();
selectLayerBelow();
} while(topLayer != app.activeDocument.activeLayer);
function selcol(cL, cA, cB) {
var allowance = 20; //許容量
cLAB = [cL, cA, cB];
var idClrR = charIDToTypeID("ClrR");
var desc1426 = new ActionDescriptor();
var idFzns = charIDToTypeID("Fzns");
desc1426.putInteger(idFzns, allowance);
var idMnm = charIDToTypeID("Mnm ");
var desc1427 = new ActionDescriptor();
var idLmnc = charIDToTypeID("Lmnc");
desc1427.putDouble(idLmnc, cLAB[0]);
var idA = charIDToTypeID("A ");
desc1427.putDouble(idA, cLAB[1]);
var idB = charIDToTypeID("B ");
desc1427.putDouble(idB, cLAB[2]);
var idLbCl = charIDToTypeID("LbCl");
desc1426.putObject(idMnm, idLbCl, desc1427);
var idMxm = charIDToTypeID("Mxm ");
var desc1428 = new ActionDescriptor();
var idLmnc = charIDToTypeID("Lmnc");
desc1428.putDouble(idLmnc, cLAB[0]);
var idA = charIDToTypeID("A ");
desc1428.putDouble(idA, cLAB[1]);
var idB = charIDToTypeID("B ");
desc1428.putDouble(idB, cLAB[2]);
var idLbCl = charIDToTypeID("LbCl");
desc1426.putObject(idMxm, idLbCl, desc1428);
var idcolorModel = stringIDToTypeID("colorModel");
desc1426.putInteger(idcolorModel, 0);
executeAction(idClrR, desc1426, DialogModes.NO);
var idDlt = charIDToTypeID("Dlt ");
executeAction(idDlt, undefined, DialogModes.NO);
var idsetd = charIDToTypeID("setd");
var desc1430 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
var ref183 = new ActionReference();
var idChnl = charIDToTypeID("Chnl");
var idfsel = charIDToTypeID("fsel");
ref183.putProperty(idChnl, idfsel);
desc1430.putReference(idnull, ref183);
var idT = charIDToTypeID("T ");
var idOrdn = charIDToTypeID("Ordn");
var idNone = charIDToTypeID("None");
desc1430.putEnumerated(idT, idOrdn, idNone);
executeAction(idsetd, desc1430, DialogModes.NO);
}
function selectLayerBelow() {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Bckw" ) );
desc.putReference( charIDToTypeID( "null" ), ref );
desc.putBoolean( charIDToTypeID( "MkVs" ), false );
executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
}
function hideLayer() {
var idHd = charIDToTypeID("Hd ");
var desc1657 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
var list162 = new ActionList();
var ref300 = new ActionReference();
var idLyr = charIDToTypeID("Lyr ");
var idOrdn = charIDToTypeID("Ordn");
var idTrgt = charIDToTypeID("Trgt");
ref300.putEnumerated(idLyr, idOrdn, idTrgt);
list162.putReference(ref300);
desc1657.putList(idnull, list162);
executeAction(idHd, desc1657, DialogModes.NO);
}
}
function CGM_removeBgColor(){
try {
removeBgColor();
} catch (e){
}
}
CGM_removeBgColor();CGM_removeBgColor.jsxを 以下のフォルダに保存します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\- Photoshopを再起動します。
STEP.2 スクリプトを実行
- [ファイル] → [スクリプト] → [CGM_removeBgColor]を選択します。
- レイヤー内の指定した色域が自動で削除されます。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
シェイプや塗りを作る方法は、ほかにも書いています。
あわせて読みたい


Photoshopスクリプト(jsx)│特定のレイヤー名にだけ回転をかける方法
Photoshopで特定のレイヤー名にだけ回転を適用するスクリプトを紹介します。 レイヤー名の命名ルールに沿って該当するレイヤーのみを自動で回転できるツールです。 http…
あわせて読みたい


Photoshop│Illustratorからコピーする際のアンチエイリアスを防ぐ方法
IllustratorからPhotoshopへグラフィックをコピー&ペーストする際、意図しないアンチエイリアスがかかって境界がぼやける場合があります。 本記事では、ペースト時にア…
あわせて読みたい


Photoshop│Illustratorのデータをシェイプに変換する方法
IllustratorからPhotoshopへベクターデータをコピーする際は、貼り付け形式によってエッジの描画品質が変化するため注意が必要です。 この記事では、Photoshop側でパス…
あわせて読みたい


Photoshop│便利な小技集
Photoshopを使っていると、作業を効率化できる便利な機能や操作方法が多くあります。 本記事では、知っておくと作業効率が上がる便利な小技を紹介します。 自動選択の切…
まとめ
- 指定した色(Lab値)を一括で選択・削除できる
- レイヤーごとに手作業で消去せず一括処理が可能
- スクリプトを調整することで色域の範囲変更にも対応
定型的な背景削除作業を効率化するために、このスクリプトを活用して画像処理の手間を軽減してみてください。
