Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将图像文件作为图层加载到Photoshop_Python_Python 3.x_Photoshop - Fatal编程技术网

Python 将图像文件作为图层加载到Photoshop

Python 将图像文件作为图层加载到Photoshop,python,python-3.x,photoshop,Python,Python 3.x,Photoshop,我有一个现有的PSD文件,其中包含两个图像。我的目标是将其中一个图像更改为位于同一文件夹中的另一个图像。我检查了其他问题,发现使用Python可以以不同的方式实现相同的结果,但是我找不到适合我所需实现的解决方案。(我想通过Photoshop的COM界面来实现) 实际上,我可以访问图层并设置其属性,但不能更改源图像/对象 import win32com.client import os # opens ps psApp = win32com.client.Dispatch("Photoshop.

我有一个现有的PSD文件,其中包含两个图像。我的目标是将其中一个图像更改为位于同一文件夹中的另一个图像。我检查了其他问题,发现使用Python可以以不同的方式实现相同的结果,但是我找不到适合我所需实现的解决方案。(我想通过Photoshop的COM界面来实现)

实际上,我可以访问图层并设置其属性,但不能更改源图像/对象

import win32com.client
import os

# opens ps
psApp = win32com.client.Dispatch("Photoshop.Application")
# opens file
psApp.Open(r"F:\dev\ae\f1.psd") 

# new image to add
img1 = r"F:\dev\ae\img1.png"

doc = psApp.Application.ActiveDocument

# new blank layer
doc.ArtLayers.Add()

# get layer to change
layer = doc.ArtLayers[1]        

对于各种语言,我发现Python中的大多数方法和属性名称都基于
VBScript版本
,但我甚至无法找到解决方案。当我在
ArtLayers
上调用
Add()
方法时,它会创建一个空白层,我没有找到其他方法对图像/智能对象执行相同的操作。

嘿,我在寻找同样的东西,在挖掘了您找到的文档中的示例代码后,我找到了这项工作

psApp.Load(img1)
psApp.ActiveDocument.Selection.SelectAll()
psApp.ActiveDocument.Selection.Copy()
psApp.ActiveDocument.Close()
psApp.ActiveDocument.Paste()
我的意思是这有点愚蠢,但它是有效的。如果不是最后一个文档,则可能需要在粘贴之前重新选择该文档