如何在python中使用win32com.client将文档另存为.psb文件?

如何在python中使用win32com.client将文档另存为.psb文件?,python,photoshop,win32com,Python,Photoshop,Win32com,在photoshop和python中,我无法将活动文档保存为PSB(大文档格式)文件 使用win32com.client,我可以将活动文档保存为.psd文件,如下所示: from win32com.client import Dispatch psApp = Dispatch("Photoshop.Application") activeDocument = psApp.Application.ActiveDocument activeDocument.SaveAs("E:\\PSDCopy"

在photoshop和python中,我无法将活动文档保存为PSB(大文档格式)文件

使用win32com.client,我可以将活动文档保存为.psd文件,如下所示:

from win32com.client import Dispatch

psApp = Dispatch("Photoshop.Application")
activeDocument = psApp.Application.ActiveDocument
activeDocument.SaveAs("E:\\PSDCopy", PhotoshopSaveOptions, False)
尽管我不能强迫它保存为psb,不管我怎么做。 我在VBScript文档中也找不到任何线索,现在甚至连一个关于psb文件的词都找不到


任何帮助都将不胜感激。

Adobe为与Photoshop的接口创建了一个糟糕的API。更糟糕的是,该文档已被弃用,不包括PSB文件、EXR文件等更新

找到如何为此编写代码的一个好方法是使用Photoshop ActionListener,然后用自己的方式进行破解(虽然并不总是有效,但它会给你一些好的线索)。你可以阅读更多关于它的内容

这应该符合您的要求:

将comtypes.client作为ct导入
app=ct.CreateObject('Photoshop.Application')
def另存为psb(路径):
“”“将当前文档保存为具有最大兼容性的PSB
打开了。
Args:
path(str):这是输出PSB的文件名
"""
desc19=ct.CreateObject(“Photoshop.ActionDescriptor”)
desc20=ct.CreateObject(“Photoshop.ActionDescriptor”)
desc20.putBoolean(app.StringIDToTypeID('maximizeCompatibility'),True)
描述19.1对象(
app.CharIDToTypeID('As')、app.CharIDToTypeID('Pht8')、desc20)
desc19.putPath(app.CharIDToTypeID('In'),path)
logging.debug(路径)
desc19.putBoolean(app.CharIDToTypeID('LwCs'),True)
app.executeAction(app.CharIDToTypeID('save'),desc19,3)

Adobe为与Photoshop的接口创建了一个糟糕的API。更糟糕的是,该文档已被弃用,不包括PSB文件、EXR文件等更新

找到如何为此编写代码的一个好方法是使用Photoshop ActionListener,然后用自己的方式进行破解(虽然并不总是有效,但它会给你一些好的线索)。你可以阅读更多关于它的内容

这应该符合您的要求:

将comtypes.client作为ct导入
app=ct.CreateObject('Photoshop.Application')
def另存为psb(路径):
“”“将当前文档保存为具有最大兼容性的PSB
打开了。
Args:
path(str):这是输出PSB的文件名
"""
desc19=ct.CreateObject(“Photoshop.ActionDescriptor”)
desc20=ct.CreateObject(“Photoshop.ActionDescriptor”)
desc20.putBoolean(app.StringIDToTypeID('maximizeCompatibility'),True)
描述19.1对象(
app.CharIDToTypeID('As')、app.CharIDToTypeID('Pht8')、desc20)
desc19.putPath(app.CharIDToTypeID('In'),path)
logging.debug(路径)
desc19.putBoolean(app.CharIDToTypeID('LwCs'),True)
app.executeAction(app.CharIDToTypeID('save'),desc19,3)

最新版本的PS listener脚本需要从下载。此外,安装说明也已更改。这就像是“密码学入门”。@ArdaKutlu实际上,Photoshop揭露其行为的方式并不总是直截了当的。有时,即使您完全复制并粘贴了侦听器,您也无法在不同的Photoshop版本中执行它。在这种情况下,我建议,首先通过
Photoshop->Scripts
菜单保存您要测试的函数,如果它有效,请使用Python的
REPL
逐行执行并调试:)也可以随意更新我的答案,如果这对您有帮助:)t出于某种原因,我无法使它与win32com.client一起工作。我之所以要使用它,是因为当使用pyinstaller冻结时,它只需要额外的10mb空间。而comtypes库占用了近500mb的额外空间。更重要的是,当使用pyinstaller冻结时,我无法使comtypes工作。我很想提高投票率,但我的声誉似乎不够高,不足以让公众看到。不必担心提高投票率。我将向您发送另一个使用
win32com
的版本!我刚刚让它与win32com.client一起工作。与comtypes.client不同,Dispatches中的方法以大写字母开头。在comtypes中:
desc19.putObject
与win32com一起变成
desc19.putObject
,非常感谢您需要从下载PS listener脚本的最新版本。此外,安装说明也已更改。这就像是“密码学入门”。@ArdaKutlu实际上,Photoshop揭露其行为的方式并不总是直截了当的。有时,即使您完全复制并粘贴了侦听器,您也无法在不同的Photoshop版本中执行它。在这种情况下,我建议,首先通过
Photoshop->Scripts
菜单保存您要测试的函数,如果它有效,请使用Python的
REPL
逐行执行并调试:)也可以随意更新我的答案,如果这对您有帮助:)t出于某种原因,我无法使它与win32com.client一起工作。我之所以要使用它,是因为当使用pyinstaller冻结时,它只需要额外的10mb空间。而comtypes库占用了近500mb的额外空间。更重要的是,当使用pyinstaller冻结时,我无法使comtypes工作。我很想提高投票率,但我的声誉似乎不够高,不足以让公众看到。不必担心提高投票率。我将向您发送另一个使用
win32com
的版本!我刚刚让它与win32com.client一起工作。与comtypes.client不同,Dispatches中的方法以大写字母开头。在comtypes中:
desc19.putObject
与win32com一起变成
desc19.putObject
,非常感谢