photoshop-python-api icon indicating copy to clipboard operation
photoshop-python-api copied to clipboard

Python API for Photoshop.

logo

python version PyPI version Downloads Status Downloads License pypi format Chat on Discird Maintenance Bump version pages-build-deployment Documentation Status

All 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
2021
2020
cc2019
cc2018
cc2017

Installing

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.

Hello World


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}")')

demo

Photoshop Session

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}")')


Contributors ✨

Thanks goes to these wonderful people (emoji key):


Hal

💻

voodraizer

🐛

brunosly

🐛

tubi

🐛

wjxiehaixin

🐛

罗马钟

🐛

clement

🐛

krevlinmen

🐛

Thomas

🐛

CaptainCsaba

🐛

Il Harper

💻

blunderedbishop

🐛

MrTeferi

💻

Damien Chambe

💻

Ehsan Akbari Tabar

🐛

This project follows the all-contributors specification. Contributions of any kind are welcome!

Repobeats analytics

Repobeats analytics

how to get Photoshop program ID

Get-ChildItem "HKLM:\SOFTWARE\Classes" | 
  ?{ ($_.PSChildName -match "^[a-z]+\.[a-z]+(\.\d+)?$") -and ($_.GetSubKeyNames() -contains "CLSID") } | 
  ?{ $_.PSChildName -match "Photoshop.Application" } | ft PSChildName

get_program_id

How to get a list of COM objects from the registry

Useful links

  • https://theiviaxx.github.io/photoshop-docs/Photoshop/
  • http://wwwimages.adobe.com/www.adobe.com/content/dam/acom/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2015.pdf
  • https://github.com/lohriialo/photoshop-scripting-python
  • https://www.adobe.com/devnet/photoshop/scripting.html
  • https://www.youtube.com/playlist?list=PLUEniN8BpU8-Qmjyv3zyWaNvDYwJOJZ4m
  • http://yearbook.github.io/esdocs/#/Photoshop/Application
  • http://www.shining-lucy.com/wiki/page.php?id=appwiki:photoshop:ps_script
  • http://www.tonton-pixel.com/wp-content/uploads/DecisionTable.pdf
  • http://jongware.mit.edu/pscs5js_html/psjscs5/pc_Application.html
  • https://indd.adobe.com/view/a0207571-ff5b-4bbf-a540-07079bd21d75
  • http://shining-lucy.com/wiki/page.php?id=appwiki:photoshop:ps_script
  • http://web.archive.org/web/20140121053819/http://www.pcpix.com/Photoshop/char.html
  • http://www.tonton-pixel.com/scripts/utility-scripts/get-equivalent-id-code/index.html
  • https://github.com/Adobe-CEP/Samples/tree/master/PhotoshopEvents
  • https://evanmccall.wordpress.com/2015/03/09/how-to-develop-photoshop-tools-in-python