如何用 Python 操控 Photoshop?自动化修图与批量设计入门指南

📅 2026/8/13 12:58:52
如何用 Python 操控 Photoshop?自动化修图与批量设计入门指南
如何用 Python 操控 Photoshop自动化修图与批量设计入门指南【免费下载链接】photoshop-python-apiPython API for Photoshop.项目地址: https://gitcode.com/gh_mirrors/ph/photoshop-python-api周三晚上十点设计师小张盯着屏幕上的 50 张 banner 发呆客户要统一换 logo、改一句文案、重新导出三种尺寸。他已经在 Photoshop 里机械地重复了快两个小时手酸、眼涩、心里在骂人。其实他手边就有解决方案——photoshop-python-api一个用 Python 给 Photoshop 装上遥控器的开源库。把重复操作写成脚本剩下的时间用来喝咖啡。这篇文章不打算按部就班地给你念说明书而是从我到底能用它干什么出发带你用几个真实场景把它跑起来。读完之后你至少能写出第一个属于自己的 PS 自动化脚本。photoshop-python-api 到底是什么给 Photoshop 装一个 Python 遥控器一句话概括它是一个用 Python 语言操控 Adobe Photoshop 的接口库。你的 Python 代码通过 Windows 的 COM 机制连接到本机正在运行的 Photoshop然后像操作遥控器一样让 PS 帮你建文档、加图层、改颜色、存文件。也因此有一个重要前提这个库目前只支持 Windows 平台。如果你用 macOS可以暂时观望但如果你在用 Windows那今天的内容基本都能照做。它和动作录制JS 脚本有什么不一样很多人的第一反应是PS 自带动作面板录一遍不就完事了吗还能用 JavaScript 写脚本为什么还要 Python简单对比一下方案上手难度灵活性适合场景PS 动作录制最低差只能线性回放固定流程、一次性任务JS 脚本ExtendScript中等较强但要学专门的脚本语言复杂 PS 内部逻辑photoshop-python-api低会 Python 就行最强能接文件系统、数据库、爬虫批量处理、自动化流水线最大的优势在于Python 生态里的一切都能为你所用。比如你用os遍历文件夹里的 200 张图片用requests下载素材再用这个库丢给 Photoshop 处理——整个链路写在一个脚本里一气呵成。3 分钟跑通第一个脚本安装、连接、生成图片第一步安装用 pip 一行搞定pip install photoshop_python_api第二步启动 Photoshop没错脚本执行时 Photoshop 必须处于打开状态。它扮演的角色是远程控制的服务器Python 只是发指令的客户端。第三步写一个 Hello World项目提供了两种写法我推荐从更省心的Session会话式写法开始from photoshop import Session with Session(actionnew_document) as ps: doc ps.active_document # 配置一个亮绿色文字 text_color ps.SolidColor() text_color.rgb.green 255 # 新建文字图层 text_layer doc.artLayers.add() text_layer.kind ps.LayerKind.TextLayer text_layer.textItem.contents Hello, Photoshop API! text_layer.textItem.position [120, 180] text_layer.textItem.size 48 text_layer.textItem.color text_color # 另存为 JPG jpg_path d:/hello_ps.jpg options ps.JPEGSaveOptions(quality8) doc.saveAs(jpg_path, options, asCopyTrue)跑完这一段你的磁盘上就多了一张写着绿色文字的 JPG。with Session(...)会自动帮你处理连接和退出ps.后面跟的SolidColor、LayerKind、JPEGSaveOptions都是封装好的 PS 对象读起来很像在操作 PS 本身。三个真实场景看懂它的能力边界光会写文字图层还不够来看看它真正值钱的地方批量、重复、流水线。场景一批量把 PSD 图层导出为 PNG 图片电商设计经常要一个 PSD所有图层各导出一张图。手动做要逐个开开关关图层很磨人。用库里的思路参考examples/export_layers_as_png.py可以这样写from photoshop import Session with Session() as ps: doc ps.active_document # 先记录所有图层的初始可见状态 visibilities [layer.visible for layer in doc.layers] for layer in doc.layers: layer.visible False try: for i, layer in enumerate(doc.layers): layer.visible True # 只显示当前这一层 options ps.PNGSaveOptions() doc.saveAs(fd:/export/layer_{i}_{layer.name}.png, options, True) layer.visible False finally: # 无论成败最后都恢复图层状态 for layer, visible in zip(doc.layers, visibilities): layer.visible visible注意try...finally的用法万一中途报错也要把图层可见性还原回去不能把用户的 PSD 搞乱。场景二一行代码给图片加滤镜和锐化滤镜不用再靠滤镜菜单 调参 预览了。apply_filters.py和smart_sharpen.py演示了如何用代码精确控制参数from photoshop import Session with Session() as ps: doc ps.active_document layer doc.activeLayer # 高斯模糊 blur ps.GaussianBlurOptions() blur.radius 10.0 layer.applyGaussianBlur(blur) # 智能锐化参数全部可调 sharp ps.SmartSharpenOptions() sharp.amount 120.0 sharp.radius 3.0 sharp.noiseReduction 20 sharp.moreAccurate True layer.applySmartSharpen( amountsharp.amount, radiussharp.radius, noiseReductionsharp.noiseReduction, moreAccuratesharp.moreAccurate, )同一套参数可以套在几百张图上效果完全一致——这对保证输出风格统一来说是刚需。场景三批量执行 Photoshop 预设动作如果你已经有录制好的 PS 动作Action也能直接用代码批量调用参考run_batch.pyfrom photoshop import Session with Session() as ps: options ps.BatchOptions() options.destination 3 options.destinationFolder d:/output ps.app.batch( filesyour_file_list, # 一个文件路径列表 actionNameQuadrant Colors, # 动作名 actionSetDefault Actions, # 动作组名 optionsoptions, )your_file_list完全可以用os.listdir()生成这就把批量处理一个文件夹串起来了。Session 进阶玩法打开、新建、复制文档一条龙前面一直在说Session但它的action参数其实还藏着不少便利功能。看photoshop/session.py源码就能发现Session 支持三种内置动作actionnew_document进入会话时自动新建一个文档actionopen配合file_path参数自动打开指定 PSD 文件actiondocument_duplicate复制当前活动文档比如处理一个已有的 PSD可以这样写from photoshop import Session with Session(d:/design/source.psd, actionopen, auto_closeTrue) as ps: ps.active_document.trim(ps.TrimType.TopLeftPixel, True, True, True, True) ps.active_document.save()auto_closeTrue表示退出会话时自动关闭文档避免开着太多窗口。另外还可以传ps_version参数指定 PS 版本以及callback在会话结束时执行自定义逻辑——如果你将来要写更复杂的工具这几个参数会很有用。新手最常踩的 5 个坑与避坑清单把这几个坑提前说清楚能帮你少走很多弯路忘记先打开 Photoshop。这是最常见的报错来源脚本连不上 COM 对象会直接抛异常。先开 PS再跑脚本。版本不匹配。官方测试覆盖了 Photoshop 2017 到 2025 的版本但不同版本 API 可能略有差异。遇到诡异问题时用Session(ps_version2022)之类的参数显式指定版本。操作完图层对象失效。PS 的图层对象在某些操作后会失效比如执行了替换内容、删除等操作。稳妥的做法是操作后再重新获取一次activeLayer或对应图层引用。路径问题。Windows 下建议使用绝对路径注意反斜杠转义涉及中文路径时必要时先转成标准路径再传给 API。报错信息看不懂。库把 COM 错误封装成了自己的异常类型photoshop/api/errors.py学会捕获errors.PhotoshopPythonAPIError排查效率会高很多。写在最后从复制示例到写出你自己的第一个脚本回到开头的小张。现在他只需要写一个十几行的脚本遍历文件夹 → 打开 PSD → 替换 logo → 改文案 → 导出三个尺寸 → 关闭。50 张图几分钟跑完剩下的时间他真的可以去喝咖啡了。这个项目最友好的一点是examples/目录下躺着 30 多个现成脚本裁剪、旋转、导出画板、替换图片、执行 JavaScript、添加图层样式……几乎每个常见需求都能找到对应的参考。想动手的话git clone https://gitcode.com/gh_mirrors/ph/photoshop-python-api cd photoshop-python-api然后翻一翻examples/hello_world.py和examples/export_layers_as_png.py改几个参数跑一遍你就完成了从看教程到写脚本的跨越。记住一句话凡是你在 PS 里重复做过两遍以上的操作都值得交给 Python。现在打开 Photoshop跑起你的第一个脚本吧。【免费下载链接】photoshop-python-apiPython API for Photoshop.项目地址: https://gitcode.com/gh_mirrors/ph/photoshop-python-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考