Как я могу сохранить как документ .psb файл, используя win32com.client в python? - PullRequest
1 голос
/ 13 мая 2019

В фотошопе и при использовании 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 голосов
/ 15 мая 2019

Adobe создала ужасный API для взаимодействия с Photoshop. Хуже того, документация устарела и не включает в себя такие обновления, как файлы PSB, файлы EXR и т. Д.

Хороший способ узнать, как написать код для этого, - это использовать Photoshop ActionListener и взломать свой путь (не всегда работает, но он дает вам хорошие подсказки). Подробнее об этом можно прочитать здесь .

Это должно делать то, что вы ищете:

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)
...