#python #python-3.x #photoshop #photoshop-script #photoshop-sdk
Вопрос:
Traceback (most recent call last):
File "C:Usersdeepak.prasadDesktoppython_scrappingpsdapp.py", line 18, in <module>
ps.app.executeAction(replace_contents, desc)
File "C:Usersdeepak.prasadAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagesphotoshopapiapplication.py", line 354, in executeAction
return self.app.executeAction(event_id, descriptor, display_dialogs)
File "C:Usersdeepak.prasadAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagescomtypesclientlazybind.py", line 182, in caller
return self._comobj._invoke(descr.memid, descr.invkind, 0, *args)
File "C:Usersdeepak.prasadAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagescomtypesautomation.py", line 728, in _invoke
self.__com_Invoke(memid, riid_null, lcid, invkind,
_ctypes.COMError: (-2147213497, None, (None, None, None, 0, None))
> Blockquote
Я застрял на вышеупомянутой ошибке и не получаю ни малейшего представления о том, откуда, я просто пытаюсь использовать photshop-api для замены изображения моего psd-файла. Прикрепляю свой код для справки.
"""Replace the image of the current active layer with a new image."""
from photoshop import Session
import photoshop.api as ps
app = ps.Application()
print("ps.Application executed")
app.load("C:\Users\deepak.prasad\Desktop\python_scrapping\psd\Ad-format-final-1.psd")
print("template loaded successfully")
with Session() as ps:
replace_contents = ps.app.stringIDToTypeID("logo")
desc = ps.ActionDescriptor
idnull = ps.app.charIDToTypeID("null")
desc.putPath(idnull, "C:\Users\deepak.prasad\Desktop\python_scrapping\psd\logo1.png")
ps.app.executeAction(replace_contents, desc)
Комментарии:
1. У тебя есть
desc = ps.ActionDescriptor
. Не зная, к какому коду это приводит, вам нужно создать экземпляр дескриптора, например:win32com.client.Dispatch('Photoshop.ActionDescriptor')