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()
実行:
更新:複数のPhotoshopをインストールしているPCでエラーが返される場合の対処法
複数のバージョン又は、複数のビットバージョンのPhotoshopをインストールしていると、場合によってはエラーが返されるかも知れません。
この場合のエラーを回避する為には、どのバージョンのPhotoshopなのかを指定する必要があります。
Photoshopのバージョンは「2021」のような表に示されている数字ではなく、win32.client.Dispatchで指定するアプリケーションのバージョンなのですが、その番号はどこで確認できるのでしょう。
win32.client.Dispatchで指定するアプリケーションのバージョンは「Windowsのレジストリエディター」で確認できます。
タスク バーの検索ボックスに 「regedit」と入力し、結果から 「レジストリ エディター」をクリック、起動します。
エディターが開いたら左側のツリーで「HKEY_CURRENT_USER」もしくは「HKEY_LOCAL_MACHINE」を探しクリック。
ツリーの下層から SOFTWARE > Adobe > Photoshop を見つけてクリック。
そこに[150.0]のような数字があればそれがバージョン番号です。
(PhotoshopCC 2021は150.0のようです)
見つけたバージョン番号を使用してコードを修正します。
psCom = win32com.client.Dispatch('PhotoShop.Application.150')
これで複数のPhotoshopがインストールされてる場合のエラーは回避されると思います。
※Photoshopのバージョン確認で参考にしたサイト:Tech Art Tiki
>>http://techarttiki.blogspot.com/2008/08/photoshop-scripting-with-python.html
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について体系的にまとめられて書かれた数少ない日本語の書籍
Adobe JavaScriptリファレンス
デザイナー、イラストレーター、DTPオペレーターなどが、IllustratorやPhotoshop、InDesignなどAdobeアプリケーションを使って定形作業をする場合、Adobe JavaScriptを使うと作業を自動化することができます。本書はそのAdobe JavaScriptのコマンドリファレンスです。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|