Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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_Photoshop_Win32com_Psd - Fatal编程技术网

用Python自动化简单的Photoshop

用Python自动化简单的Photoshop,python,photoshop,win32com,psd,Python,Photoshop,Win32com,Psd,我工作的公司创建激光雕刻定制产品。雕刻机要求文件采用psd格式。我们的网站允许用户选择模板并输入他们想要的文本。订购后,我们的一名工作人员在GIMP/Photoshop中打开模板,切换文本,然后保存并上传。看起来很简单,但当你一天要做数百个这样的事情时,似乎它值得自动化 我说的主要语言是python,但我已经涉猎了足够多的其他语言,足以完成小项目。我看到有一些不同的PSD/photoshop模块(pywin32、pyps、PSD工具),但要么没有足够的文档,要么它们似乎不适合我的用途。 更详细地

我工作的公司创建激光雕刻定制产品。雕刻机要求文件采用psd格式。我们的网站允许用户选择模板并输入他们想要的文本。订购后,我们的一名工作人员在GIMP/Photoshop中打开模板,切换文本,然后保存并上传。看起来很简单,但当你一天要做数百个这样的事情时,似乎它值得自动化

我说的主要语言是python,但我已经涉猎了足够多的其他语言,足以完成小项目。我看到有一些不同的PSD/photoshop模块(pywin32、pyps、PSD工具),但要么没有足够的文档,要么它们似乎不适合我的用途。 更详细地说,唯一需要做的是添加一个文本层,在这里我们可以选择字体、位置,最好是选择是否加粗、斜体等,但这不是必需的。我有一个解决方案,可以制作一个文本层(通过win32com),但我找不到如何编辑文本的不同元素

import win32com.client

# Pieced together from
# http://techarttiki.blogspot.com/2008/08/photoshop-scripting-with-python.html
# and
# http://rubypane.blogspot.com/2013/01/sample-python-script-to-control.html

psApp = win32com.client.Dispatch("Photoshop.Application")
psApp.Open(r"C:\temp\blah.psd")         # Opens a PSD file
doc = psApp.Application.ActiveDocument  # Get active document object
layer = doc.ArtLayers[2]                # Get the bottom-most layer

layers = doc.artLayers
artLayerRef = layers.add

artLayerRef.kind = 2 #Text layer
# Set the contents of the text layer.
textItemRef = artLayerRef.TextItem
textItemRef.Contents = "Hello, web!"

doc.Save()

这段代码生成了一个没有任何格式的小文本框,上面写着“Hello World!”。同样,我希望能够控制它的位置、字体,如果可能的话,还可以控制它的其他元素。我也对其他解决方案持开放态度,无论是以另一种格式创建图片,然后将其转换为psd,使用另一种模块/语言,还是您的聪明头脑能够想到的任何其他解决方案。最坏的情况是,我们继续手动操作。谢谢你的帮助

您可以尝试使用软件包
photoshop\u python\u api

Hello World
用于此软件包

将photoshop作为ps导入
def hello_world():
app=ps.Application()
doc=app.documents.add()
text_color=ps.SolidColor()
text_color.rgb.green=255
新建\文本\图层=doc.artLayers.add()
new_text_layer.kind=ps.LayerKind.TextLayer
new_text_layer.textItem.contents='Hello,World!'
new_text_layer.textItem.position=[160167]
新建\u text\u layer.textItem.size=40
新建\u text\u layer.textItem.color=文本\u颜色
选项=ps.jpeg保存选项(质量=5)
jpg='d:/hello_world.jpg'
doc.saveAs(jpg,options,asCopy=True)
doJavaScript(f'alert(“保存到jpg:{jpg}”))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
你好(世界)
更多示例:


我不懂python,但这些属性看起来很像Photoshop Javascript()中的属性,我想知道您是否可以尝试为位置设置
textItemRef.position
,字体设置
textItemRef.font
,等等。在脚本参考pdf中搜索
textItem
。(但python中的属性显然以大写字母开头)