[![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-)
Python API for Photoshop.
The example above was created with Photoshop Python API. Check it out at https://loonghao.github.io/photoshop-python-api/examples.
Has been tested and used Photoshop version:
Photoshop Version | Supported |
---|---|
2025 | ✅ |
2024 | ✅ |
2023 | ✅ |
2022 | ✅ |
2021 | ✅ |
2020 | ✅ |
cc2019 | ✅ |
cc2018 | ✅ |
cc2017 | ✅ |
You can install via pip.
pip install photoshop_python_api
Since it uses COM (Component Object Model) connect Photoshop, it can be used in any DCC software with a python interpreter.
import photoshop.api as ps
app = ps.Application()
doc = app.documents.add()
new_doc = doc.artLayers.add()
text_color = ps.SolidColor()
text_color.rgb.red = 0
text_color.rgb.green = 255
text_color.rgb.blue = 0
new_text_layer = new_doc
new_text_layer.kind = ps.LayerKind.TextLayer
new_text_layer.textItem.contents = 'Hello, World!'
new_text_layer.textItem.position = [160, 167]
new_text_layer.textItem.size = 40
new_text_layer.textItem.color = text_color
options = ps.JPEGSaveOptions(quality=5)
# # save to jpg
jpg = 'd:/hello_world.jpg'
doc.saveAs(jpg, options, asCopy=True)
app.doJavaScript(f'alert("save to jpg: {jpg}")')
Use it as context.
from photoshop import Session
with Session(action="new_document") as ps:
doc = ps.active_document
text_color = ps.SolidColor()
text_color.rgb.green = 255
new_text_layer = doc.artLayers.add()
new_text_layer.kind = ps.LayerKind.TextLayer
new_text_layer.textItem.contents = 'Hello, World!'
new_text_layer.textItem.position = [160, 167]
new_text_layer.textItem.size = 40
new_text_layer.textItem.color = text_color
options = ps.JPEGSaveOptions(quality=5)
jpg = 'd:/hello_world.jpg'
doc.saveAs(jpg, options, asCopy=True)
ps.app.doJavaScript(f'alert("save to jpg: {jpg}")')
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind are welcome!
Get-ChildItem "HKLM:\SOFTWARE\Classes" |
?{ ($_.PSChildName -match "^[a-z]+\.[a-z]+(\.\d+)?$") -and ($_.GetSubKeyNames() -contains "CLSID") } |
?{ $_.PSChildName -match "Photoshop.Application" } | ft PSChildName
How to get a list of COM objects from the registry