Amazonで商品を見るセール会場へ

Photoshopスクリプト(jsx)│座標から色を取得し、その色のべた塗りレイヤーを作成する方法

Photoshopで特定の座標の色を取得し、その色でべた塗りレイヤーを作成するスクリプトを紹介します。

作業の効率化やカラーパレット作成に役立つスクリプトです。

Photoshopスクリプトを実行し、座標から色を取得してべた塗りレイヤーを作成した様子を示す画面。
指定した座標の色から作成されたべた塗りレイヤーや、取得されたRGB値の例を示す画面。
目次

スクリプトのメリット

  • 指定した座標の色を取得して自動でべた塗りレイヤーを作成
  • RGB値を取得し、一貫したカラーパレット作成が可能
  • 色を手作業で取得する手間を省ける
スポンサーリンク

座標から色を取得し、その色のべた塗りレイヤーを作成する方法

STEP.1 スクリプトをダウンロード・格納

  1. 先にPSDを保存し、コピーで試してください。最初はRGBの画像を開き、選択範囲を解除し、指定座標(10 px、10 px)がカンバス内にあることを確認します。描画色とレイヤー構成が変わる処理です。下記のコードをテキストエディタ等に貼り付けて保存

Photoshopのほかの操作は、まとめからご覧いただけます。

//レイヤーからカラーを取得する
var docRef = app.activeDocument
var pixelLoc = [UnitValue("10 pixels") , UnitValue("10 pixels")];
var colorSamplerRef = docRef.colorSamplers.add(pixelLoc);
app.foregroundColor = colorSamplerRef.color
colorSamplerRef.remove(); //置いたカラーサンプラーを消す

//カラーのRGB値を取得
var Colour = app.foregroundColor;  
var R = Colour.rgb.red.toFixed(2);  
var G = Colour.rgb.green.toFixed(2);  
var B = Colour.rgb.blue.toFixed(2);  

//べた塗りの作成
makeSolidFill (R,G,B);

function makeSolidFill(redC,greenC,blueC){
    var idMk = charIDToTypeID( "Mk  " );
    var desc15 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    var ref4 = new ActionReference();
    var idcontentLayer = stringIDToTypeID( "contentLayer" );
    ref4.putClass( idcontentLayer );
    desc15.putReference( idnull, ref4 );
    var idUsng = charIDToTypeID( "Usng" );
    var desc16 = new ActionDescriptor();
    var idType = charIDToTypeID( "Type" );
    var desc17 = new ActionDescriptor();
    var idClr = charIDToTypeID( "Clr " );
    var desc18 = new ActionDescriptor();
    var idRd = charIDToTypeID( "Rd  " );
    desc18.putDouble( idRd, redC);//Red variable
    var idGrn = charIDToTypeID( "Grn " );
    desc18.putDouble( idGrn, greenC);//green variable
    var idBl = charIDToTypeID( "Bl  " );
    desc18.putDouble( idBl, blueC );//blue variable
    var idRGBC = charIDToTypeID( "RGBC" );
    desc17.putObject( idClr, idRGBC, desc18 );
    var idsolidColorLayer = stringIDToTypeID( "solidColorLayer" );
    desc16.putObject( idType, idsolidColorLayer, desc17 );
    var idcontentLayer = stringIDToTypeID( "contentLayer" );
    desc15.putObject( idUsng, idcontentLayer, desc16 );
    executeAction( idMk, desc15, DialogModes.NO );
}
  1. CGM_GetColorFromCoordinates.jsx を以下のフォルダに保存します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\

Photoshop 2026(Windows)では、同じ役割のフォルダーはC:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts\にあります。

Program Filesの中なので、ファイルを置くには管理者の権限が要ります。

フォルダーに置かずに試すときは、STEP.2の代わりに[ファイル]→[スクリプト]→[参照…]でこのファイルを選び、[読み込み]を押しても実行できます。

  1. Photoshopを再起動します。

STEP.2 スクリプトを実行

  1. [ファイル] → [スクリプト] → [CGM_GetColorFromCoordinates] を選択します。
  2. カンバスの左上からX:10、Y:10 の色を取得し、描画色に設定されます。
  3. 取得したRGB値でべた塗りレイヤーが自動作成されます。

Photoshop 2026で実行した結果

2026-10-19に、Photoshop 2026(27.11.0)とWindows 11 Pro(10.0.26200)で確かめました。

2026年10月20日に、コードを直しました。

置いたカラーサンプラーを消さないので、同じファイルで11回目の実行で止まる不具合がありました。

この節の2026-10-19の結果は、直す前のコードで確かめたものです。

直す前の記事のコードを書き換えずに保存し、[ファイル]→[スクリプト]→[参照…]から実行しています。

スクリプトフォルダーに置いてメニューから選ぶ方法(STEP.1・2)は試していません。

練習用に、480×320 px・72 ppiの白い背景に、左上の赤い四角、その上に重ねた不透明度50%の青い四角、右下の黄色い四角を置いたファイルを用意しました。

作業中のレイヤーは「背景」にしてから実行しています。

実行すると、紫(R125・G70・B125)の「べた塗り 1」ができ、描画色も同じ紫に変わりました。

直す前のコードでは、カンバスの左上に番号「1」のカラーサンプラーの印が残りました。

左上の重なった部分と同じ紫で白い部分が塗られたカンバスと、背景のすぐ上にべた塗り 1 ができたレイヤーパネル
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。直す前の掲載コードを[参照…]から実行した直後の画面。作業中だった背景のすぐ上に紫のべた塗り 1 ができ、左上には番号1のカラーサンプラーが残った。

作業中のレイヤーではなく、見えている色を拾う

コードのコメントは「レイヤーからカラーを取得する」ですが、取れるのは画面に見えている合成の色です。

今回の紫は、赤の上に不透明度50%の青が重なった色で、どのレイヤーにもそのままの色はありません。

作業中のレイヤーは白い「背景」でしたが、白は取得されませんでした。

べた塗りレイヤーは作業中のレイヤーのすぐ上にできる

「べた塗り 1」は、作業中だった「背景」のすぐ上に、白いレイヤーマスク付きでできました。

選択範囲が無い状態ではカンバス全体を塗るので、べた塗りより上のレイヤーだけが見えたまま残ります。

一番上のレイヤーを選んで実行したときは、カンバス全体が取得した色の1色になりました。

直す前のコードは、実行するたびにカラーサンプラーが1つ増えた

直す前のコードはカラーサンプラーを置いて色を読み、そのまま残していました。

同じファイルでもう一度実行すると、同じ位置に2つ目のカラーサンプラーが置かれ、同じ色の「べた塗り 2」が「べた塗り 1」の上にできました。

ヒストリーには、1回の実行ごとに「新規カラーサンプラー」と「新規カラー塗りつぶしレイヤー」の2つが残りました。

1回目の実行後はべた塗り 1 だけ、2回目の実行後はその上にべた塗り 2 が増えたレイヤーパネルの比較
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。同じファイルで続けて2回実行したときのレイヤーパネル。2回目は同じ色のべた塗り 2 が上に増えた。

直したコードは、色を読んだ後にcolorSamplerRef.remove();で、置いたカラーサンプラーを消します。

2026年10月20日に、直したコードを同じ練習ファイルで12回続けて実行しました。

別のスクリプトから実行して確かめています([参照…]からは実行していません)。

12回とも止まらずに、同じ紫の「べた塗り 1」〜「べた塗り 12」ができ、カラーサンプラーは1つも残りませんでした。

ヒストリーには、1回の実行ごとに「新規カラーサンプラー」「カラーサンプラーを削除」「新規カラー塗りつぶしレイヤー」の3つが残ります。

先にカラーサンプラーを3つ置いたファイルで実行しても、消えるのはスクリプトが置いた1つだけで、3つは同じ位置に残りました。

カラーサンプラーが10個あると止まる

Photoshop 2026では、1つのファイルに置けるカラーサンプラーは10個まででした。

カラーサンプラーが10個ある状態で実行すると、「「作成:」コマンドは現在使用できません。」と出ます。

[OK]を押すと「エラー 8007: ユーザーにより操作がキャンセルされました」「ライン: 4」の窓が続き、べた塗りレイヤーは作られません。

直す前のコードは実行するたびにカラーサンプラーを残すので、同じファイルで11回目の実行がこの状態になっていました。

この確認では、10個のうち8個を確認用のスクリプトで足してから、画面から実行しています。

カラーサンプラーが10個並んだカンバスに作成コマンドは現在使用できませんの窓が出て、続けてエラー 8007 ライン 4 の窓が出た画面
2026-10-19撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。カラーサンプラーが10個ある状態で実行した画面。上が1つ目の窓、下が[OK]の後に出た2つ目の窓で、べた塗りレイヤーは作られなかった。

上限が原因で止まったときは、不要なカラーサンプラーを減らしてから実行し直してください。以下の一括削除は、自分で置いた必要なサンプラーも消します。

スクリプトで消すならdocRef.colorSamplers.removeAll();で全部消えることを、確認用のスクリプトで確かめました。

直したコードは正常に色を取得した後、自分で置いたカラーサンプラーを消すため、確認した12回の実行では数が増えませんでした。追加する処理は削除より先にあるので、実行前から上限に達している場合の対処にはなりません。

カラーサンプラーツールで自分で10個置いてあるファイルで、直したコードがどうなるかは確かめていません。

解像度や定規の単位が違っても10 pxの位置

300 ppiのファイルで、定規の単位をセンチメートルにしてから実行しても、カラーサンプラーは左上から10 px・10 pxの位置に置かれました。

左上の40 pxだけ緑にしたファイルで、緑(R46・G154・B80)が取得されています。

定規の単位は変わらず、センチメートルのまま残りました。

2026年10月20日に、直したコードでも同じ条件で同じ緑が取得され、カラーサンプラーは残りませんでした。

描画色は変わったまま残る

実行後は、描画色が取得した色に変わったまま残ります。

元の描画色に戻す処理はコードに入っていないので、必要なら自分で戻してください。

確かめていないこと

選択範囲がある状態での実行、CMYKやグレースケール、16 bitのファイルでの動きは確かめていません。

カラーサンプラーツールのオプションバーから消す操作も、今回は試していません。

ほかのレイヤーを非表示にして1枚だけの色を取る使い方や、カラーサンプラーのサンプル範囲設定を変えた場合も試していません。コードはサンプル範囲を指定していないため、任意の設定でも単一ピクセルの値になるとは断定していません。

Macや、Photoshop 2026以外の版でも試していません。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

シェイプや塗りを作る方法は、ほかにも紹介しています。

スポンサーリンク

まとめ

  • 指定した座標の色を取得し、自動でべた塗りレイヤーを作成
  • RGB値を取得し、カラーパレットの作成を効率化
  • 手作業で色を拾う手間を削減

Photoshopで自動的に色を取得し、効率的にカラーパレットを作成できます。

よくある質問:座標の色を取得してべた塗りレイヤーを作る

このスクリプトでは何ができますか?

Photoshopで特定の座標の色を取得し、その色でべた塗りレイヤーを自動で作成します。作業の効率化やカラーパレット作成に役立ちます。

どんなメリットがありますか?

指定した座標の色を取得して、べた塗りレイヤーを自動で作成できます。RGB値を取得できるので、一貫したカラーパレットを作りやすくなります。色を手作業で拾う手間も省けます。

スクリプトはどのように導入しますか?

記事のコードをテキストエディタ等に貼り付けて保存し、記事で案内しているフォルダに保存します。保存後にPhotoshopを再起動してください。

どうやって実行しますか?

[ファイル] → [スクリプト] → [CGM_GetColorFromCoordinates] を選択します。実行すると、取得したRGB値でべた塗りレイヤーが自動作成されます。

どの位置の色が取得されますか?

記事のスクリプトでは、カンバスの左上からX:10、Y:10の位置の色を取得し、描画色に設定します。別の位置の色を取るには、冒頭のpixelLocの配列を変更します。1つ目のUnitValueが横方向のX、2つ目が縦方向のYで、掲載コードはどちらも10 pixelsです。例えばX:100 px・Y:50 pxなら、順にUnitValue(“100 pixels”)、UnitValue(“50 pixels”)に変更して保存します。指定位置がカンバス内にあることを確認し、コピーで試してください。この座標変更例は今回実機では試していません。

取得した色はどうなりますか?

取得した色は描画色に設定され、そのRGB値でべた塗りレイヤーが自動で作成されます。

スクリプトのコードはどこで確認できますか?

記事内に掲載しているほか、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

メニューの表示や名称が記事と違う場合はどうすればよいですか?

Photoshopのバージョンによってメニューの名称や配置が変わることがあります。最新の操作手順は、Adobeの公式情報で確認してください。

作業中のレイヤーの色が取れないのはなぜですか?

このコードが読むのは、作業中のレイヤーではなく、画面に見えている合成の色だからです。

Photoshop 2026で、上に不透明度50%のレイヤーが重なった位置では、重なった後の色が取得されることを確かめました。

何度か実行したら「「作成:」コマンドは現在使用できません。」と出ました

記事の検証では、カラーサンプラーが上限の10個に達していたことが原因でした。同じ表示だけで原因を断定せず、残っているサンプラーの数も確認してください。

2026年10月19日までのコードは実行するたびにカラーサンプラーを残していたので、同じファイルで11回目の実行で止まりました。

2026年10月20日に、置いたカラーサンプラーを消すようにコードを直しました。

不要なカラーサンプラーを減らしてから実行し直してください。修正版も最初にサンプラーを追加するため、実行前から上限に達しているケースは防げません。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次