使用该模块需要安装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版本号,这个问题,还请留言。非常感谢