Skip to main content

logo

python version PyPI version Downloads Status Downloads License pypi format Chat on Discord Maintenance Bump version pages-build-deployment Documentation Status photoshop-2024 photoshop-2023 photoshop-2022 photoshop-2021 photoshop-2020 photoshop-CC2019 photoshop-CC2018 photoshop-CC2017

All Contributors

Python API for Photoshop.

⚠️ Only for Windows platform !

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 ✅

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
Hal

💻
voodraizer
voodraizer

🐛
brunosly
brunosly

🐛
tubi
tubi

🐛
wjxiehaixin
wjxiehaixin

🐛
罗马钟
罗马钟

🐛
clement
clement

🐛
krevlinmen
krevlinmen

🐛
Thomas
Thomas

🐛
CaptainCsaba
CaptainCsaba

🐛
Il Harper
Il Harper

💻
blunderedbishop
blunderedbishop

🐛
MrTeferi
MrTeferi

💻
Damien Chambe
Damien Chambe

💻
Ehsan Akbari Tabar
Ehsan Akbari Tabar

🐛
Michael Ikemann
Michael Ikemann

🐛
Enguerrand DE SMET
Enguerrand DE SMET

💻
Proton
Proton

💻

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

🛠️ Development Guide

Welcome to the development guide for the Photoshop Python API project! This section outlines our development practices and standards to ensure code quality and consistency.

📋 Quick Start for Contributors

# Clone the repository
git clone https://github.com/loonghao/photoshop-python-api.git
cd photoshop-python-api

# Install dependencies with Poetry
poetry install

# Install pre-commit hooks
pre-commit install

# Run tests
pytest

🎨 Code Style & Quality

We maintain high code quality standards through automated tools and consistent style guidelines:

  • Style Guide: We follow the Google Python Style Guide with project-specific adjustments:

    • Line length: 120 characters max
    • Docstrings: Google style format
    • Quotes: Double quotes preferred
  • Quality Tools:

🔄 Git Workflow

We use a structured workflow to maintain a clean and organized repository:

  • Commit Messages: Follow Conventional Commits format

    <type>(<scope>): <description>
    
    [optional body]
    
    [optional footer(s)]
    

    Common types: feat, fix, docs, style, refactor, test, chore

  • Branching Strategy:

    • Main branch: main - Always stable and deployable
    • Feature branches: feature/<feature-name>
    • Bug fixes: fix/<bug-description>
    • Documentation: docs/<doc-description>

🧪 Testing

We value thorough testing to ensure reliability:

  • Framework: We use pytest for all tests
  • Coverage: Aim for high test coverage on new features
  • Run Tests: pytest or poetry run pytest

📦 Development Environment

  • Python Versions: We support Python 3.8+ (see pyproject.toml for specifics)
  • Dependency Management: Poetry for consistent environments
  • Virtual Environment: Poetry automatically creates and manages virtual environments

🤝 Contributing Process

  1. Fork & Clone: Fork the repository and clone your fork
  2. Branch: Create a feature branch with a descriptive name
  3. Develop: Make your changes following our code style guidelines
  4. Test: Ensure all tests pass and add new tests for new features
  5. Commit: Use conventional commit format for clear history
  6. Push & PR: Push your branch and create a Pull Request
  7. Review: Address any feedback from code reviews
  8. Merge: Once approved, your PR will be merged

Thank you for contributing to the Photoshop Python API project! 🎉

Metadata

Release files for photoshop-python-api 0.24.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for photoshop-python-api 0.24.2
File Size Uploaded
photoshop_python_api-0.24.2.tar.gz 56.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for photoshop-python-api 0.24.2
File Interpreter ABI Platform
photoshop_python_api-0.24.2-py3-none-any.whl Python 3 none any Details

Total release size: 127.9 kB

Release files / photoshop_python_api-0.24.2.tar.gz

Download URL photoshop_python_api-0.24.2.tar.gz
Size 56.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c8a68fa7dcf746602db143a789fc5821cac36b6dd3be12d202708987691b6c4b
BLAKE2b-256 checksum
How to use checksums
50e3cdd00c76667b814e44d563f9ee78bd06a91d669baba4cd8e758324263dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.

Transparency log

Release files / photoshop_python_api-0.24.2-py3-none-any.whl

Download URL photoshop_python_api-0.24.2-py3-none-any.whl
Size 71.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8d3d37010b033fa8ccc185cf40262ff900899488d4fc5a5bdce6de8d3e077570
BLAKE2b-256 checksum
How to use checksums
dbdbe27ad528af125c0c686961d22734256172475602431872769611c9496bd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.24.2 This release

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.9

2 release files

0.22.3

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.9

2 release files

0.21.8

2 release files

0.21.7

2 release files

0.21.6

2 release files

0.21.4

2 release files

0.21.3

2 release files

0.21.2

2 release files

0.21.1

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.7

2 release files

0.19.5

2 release files

0.19.4

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.17.7

2 release files

0.17.6

2 release files

0.17.5

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.3

2 release files

0.16.2

2 release files

0.16.0

2 release files

0.15.2

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page