python调用ps。操作动作处理图片并保存

使用该模块需要安装photoshop,我这里用的是photoshop2020
需要导入photoshop.api,可以使用pip指令下载pip install photoshop_python_api

$command = 'python C:\anzhuang\wwwpython\robot_code\dongzuo.py 2>&1';
$aa = shell_exec($command);
from photoshop import Session
import photoshop.api as ps

# 执行在Photoshop中提前录制的动作,action_name是动作名,group_name是组名
def execute_action(action_name , group_name):
# Session()获取当前激活的PS对象
    with Session() as ps:
        desc = ps.ActionDescriptor
        ref = ps.ActionReference
        idactn = ps.app.charIDToTypeID('Actn')
        ref.putName(idactn , action_name)
        ref.putName(ps.app.charIDToTypeID("ASet") , group_name)
        desc.putReference(ps.app.charIDToTypeID("null") , ref)
        ps.app.executeAction(ps.app.charIDToTypeID("Ply ") , desc , ps.DialogModes.DisplayNoDialogs)
# 待去水印的图片在PS中打开
def LoadPNG(path):
    app = ps.Application()
    app.load(path)
# 保存为png格式的图片并关闭打开的图片
def saveAspng(path):
    with Session(auto_close=True) as ps:
        options = ps.PNGSaveOptions()
        doc = ps.active_document
        doc.saveAs(path , options=options , asCopy=True)
#图片路径
path=r"C:\phpstudy\phpstudy_pro\WWW\caiji_web\public\shijuan\20240929\aa.png"
LoadPNG(path)

#这两个变量的名字根据在录制动作的时候命名来设置的
actionName="sh"
groupName="自定义"
#重复执行该批量动作,有时候执行一次去得不是很干净
#for i in range(1):
execute_action(actionName,groupName)
#去除水印的图片的保存路径
new_path=r"C:\phpstudy\phpstudy_pro\WWW\caiji_web\public\shijuan\20240929\bb.png"

saveAspng(new_path)
print("执行动作完成")

在此过程中有个问题
我是通过php调用的这个python脚本。这个时候报错(只在CMD窗口运行脚本不报错),Please check if you have Photoshop installed correctly(请检查Photoshop是否安装正确),经过查找原因,是因为在注册表找不到Photoshop版本号所导致。于是通过CMD中把版本号输出,并写死在代码中,就可以正常运行了。
在这里插入图片描述

如果哪位大佬知道,为什么在注册表找不到Photoshop版本号,这个问题,还请留言。非常感谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值