Photoshopは「COMコンポーネント」対応しているのでPythonに限らず色々なプログラム言語で扱えます。
正直COMが何なのか説明できるほど詳しくないですけど、
「プログラム言語に囚われずアプリケーション間のやり取りを円滑に簡単に?
扱いやすく?する環境?などのマイクロソフトの取り組み」
的な感じでしょうか。
マイクロソフトの取り組みなのでWindowsでしか扱えませんが、便利そうなので試してみたいと思います。
index
※記事の中で紹介した方法を使って実際にPythonでPhotoshopのスクリプトツールを作ってみました。
![]() |
|
Pythonのwin32comエクステンションwin32comをダウンロード
pythonでCOMコンポーネントを扱うにはwin32comエクステンション
pywin32が必要になります。gitHubからダウンロードできます。
自分の環境にあったものを選んでダウンロードしてください。
ダウンロードしたら実行します。
「不明な○○」などの質問を乗り越えてインストールします。

PythonスクリプトでPhotoshopの新規作成
photoshop_com.pyで保存しました。
import os import win32com.client psCom = win32com.client.Dispatch('PhotoShop.Application') psCom.Documents.Add(320,240)
import win32com.client
win32comのクライアントをインポート
psCom = win32com.client.Dispatch('PhotoShop.Application')
Photoshopを扱うオブジェクト
psCom.Documents.Add(320,240)
新規作成します。
実行:

Photoshopで新規作成したドキュメントを複製
import os import win32com.client psCom = win32com.client.Dispatch('PhotoShop.Application') psCom.ActiveDocument.Duplicate() #Duplicate
psCom.ActiveDocument.Duplicate()
実行:

PythonスクリプトでPhotoshopのファイルを開く
import os import win32com.client psCom = win32com.client.Dispatch('PhotoShop.Application') openfile = "C:\\Users\\ユーザー名\\Pictures\\Camera Roll\\DSC00274.JPG" psCom.Open(openfile)
psCom.Open(openfile)
.Open(ファイルのパス)でファイルを開くことが出来ます。
実行:

import os import win32com.client psCom = win32com.client.Dispatch('PhotoShop.Application') psCom.ActiveDocument.ActiveLayer.ApplyGaussianBlur(40.0)
実行:

javascriptのコードで実行
青く塗りつぶしてみます。
import os import win32com.client psCom = win32com.client.Dispatch('PhotoShop.Application') javaScriptCode = """ var RGBColor = new SolidColor(); RGBColor.red = 0; RGBColor.green = 0; RGBColor.blue = 255; activeDocument.selection.selectAll(); activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);""" psCom.DoJavaScript(javaScriptCode)
javaScriptCode = " "
にjavascriptで書いて、DoJavaScript()で実行します。
実行:

Photoshopのスクリプトを書いたのにPythonの実行環境からコマンドラインで実行するのは効率が悪い。Windows限定の対処法ですが是非読んでみてください。
![]() |
|
まとめ
Photoshopのスクリプトのリファレンスには、Pythonはもとより
COMコンポーネントに対応した記述はありませんが、Photoshopのスクリプトリファレンスに
[activeDocument.activeLayer]
などと表記されていたら、先頭を大文字にかえて
[ActiveDocument.ActiveLayer]
とすれば、基本的に同じ感覚で使えます。
Pythonで記述するのが困難な時は[DoJavaScript()]を使ってjavascriptで対応すれば良いと思います。
Pythonに限らずJavaScriptでも同様ですがプラグインで処理される部分をスクリプトで記述するにはプラグインのコマンドが公開されていないとコードは書くのは困難です。
その様な時はAdobe公式プラグインの ScriptingListener で対応できます。
ScriptingListener でプラグイン処理のログを出力、ログはJavaScriptで記述されているのでスクリプトコードに記述して使うことが出来ます。
[Python] [JavaScript] [ScriptingListener] それぞれ適材適所で使い分けるのが良いのではないでしょうか。
記事中のスクリプトは一切コードを書かずにコピペのみで作りました。
![]() |
|
Photoshopのjavascriptについて体系的にまとめられて書かれた数少ない日本語の書籍
![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|