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

时间:2019-05-13 13:36:04

标签: 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", PhotoshopSaveOptions, False)

尽管无论我尝试了什么,我都不能强行将其另存为psb。 我什至在VBScript文档中也找不到任何线索,甚至是关于psb文件的一句话。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

Adob​​e创建了一个糟糕的API与Photoshop进行接口。更糟糕的是,该文档已被弃用,并且不包含PSB文件,EXR文件等更新。

了解如何为此编写代码的一个好方法是使用Photoshop ActionListener并随意破解(不一定总是有效,但它会为您带来一些好的线索)。您可以详细了解here

这应该做您想要的:

import comtypes.client as ct


app = ct.CreateObject('Photoshop.Application')


def save_as_psb(path):
    """ Save the current Document as PSB with maximised compatibility
    turned ON.

    Args:
    path (str): This is the filename of the output PSB
    """

    desc19 = ct.CreateObject("Photoshop.ActionDescriptor")
    desc20 = ct.CreateObject("Photoshop.ActionDescriptor")
    desc20.putBoolean(app.StringIDToTypeID('maximizeCompatibility'), True)

    desc19.putObject(
        app.CharIDToTypeID('As  '), app.CharIDToTypeID('Pht8'), desc20)
    desc19.putPath(app.CharIDToTypeID('In  '), path)
    logging.debug(path)
    desc19.putBoolean(app.CharIDToTypeID('LwCs'), True)
    app.executeAction(app.CharIDToTypeID('save'), desc19, 3)